【SQL】sqlzoo练习题SELECT names

你。 提交于 2019-12-09 22:12:52

原地址:https://sqlzoo.net/wiki/SELECT_names/zh

上一篇:【SQL】练习题SELECT basics

1.你可以用WHERE name LIKE 'B%'來找出以 B 為開首的國家。
%是萬用字元,可以用代表任何字完。
找出以 Y 為開首的國家。

select name from world 
 where name like 'Y%'

2.找出以 Y 為結尾的國家。

select name from world 
 where name like '%Y'

3.“Luxembourg 盧森堡”中有一個x字母,還有一個國家的名字中有x。列出這兩個國家。
找出所有國家,其名字包括字母x。

select name from world 
 where name like '%x%'

4.“Iceland 冰島”和“Switzerland 瑞士”的名字都是以”land”作結束的。還有其他嗎?
找出所有國家,其名字以 land 作結尾。

select name from world
 where name like '%land'

5.“Columbia 哥倫比亞”是以 C 作開始,ia 作結尾的。還有兩個國家相同。
找出所有國家,其名字以 C 作開始,ia 作結尾。

select name from world
 where name like 'C%ia'

6.“Greece 希臘”中有雙 e 字。哪個國家有雙 o 字呢?
找出所有國家,其名字包括字母oo。

select name from world
 where name like '%oo%'

7.“Bahamas 巴哈馬”中有三個 a,還有嗎?
找出所有國家,其名字包括三個或以上的a。

select name from world
 where name like '%a%a%a%'

8.“India 印度”和”Angola 安哥拉”的第二個字母都是 n。
你可以用底線符_當作單一個字母的萬用字元。
SELECT name FROM world
WHERE name LIKE ‘_n%’
ORDER BY name
找出所有國家,其名字以t作第二個字母。

select name from world
 where name like '_t%'
--解题思路:因为要找到所有符合条件的国家,所以select后面只跟name就行。条件是名字以t作为第二个字母(没有限制t后面的字母条件),所以可以用like '_t%'解决。

9.“Lesotho 賴索托”和”Moldova 摩爾多瓦”都有兩個字母 o,被另外兩個字母相隔着。
找出所有國家,其名字都有兩個字母 o,被另外兩個字母相隔着。

select name from world
 where name like '%o__o%'

10.“Cuba古巴”和”Togo 多哥”都是 4 個字母。
找出所有國家,其名字都是 4 個字母的。

select name from world
 where name like '____'

11.“Luxembourg 盧森堡”的首都 capital 都同樣叫“Luxembourg”。
顯示所有國家名字,其首都和國家名字是相同的。

select name from world
 where name = capital

12.“Mexico 墨西哥”的首都是”Mexico City”。
顯示所有國家名字,其首都是國家名字加上”City”。
concat函數

select name from world
 where capital = concat(name,' City')
--解题思路:题目最终目的是查找到满足条件的国家名字,所以只需要查到name就行。条件是找到首都名字等于国家名字加上'city',可以用concat()函数做连接,将国家名字和'city'拼接在一起与capital比对就行。

13.找出所有首都和其國家名字,而首都要有國家名字中出現。

select capital,name from world
 where capital like concat('%',name,'%')
--解题思路:要找到首都中有国家名字出现的国家,这里不确定国家名字出现的位置,可以用concat将国家名字与%匹配符进行前后拼接,最后用like进行比对即可。

14.找出所有首都和其國家名字,而首都是國家名字的延伸。
你應顯示 Mexico City,因它比其國家名字 Mexico 長。
你不應顯示 Luxembourg,因它的首都和國家名相是相同的。

select name,capital from world
 where capital like concat(name,'%') and capital!= name
--解题思路:题目明确指出首都是国家名字的延伸,所以可以确定国家名字在首都名字中的位置,但不清楚延伸词是什么,所以用%来替代。另一个条件是首都和国家名不能相同,两个条件用and连接就能得到本题答案。

15.“Monaco-Ville"是合併國家名字 “Monaco” 和延伸詞”-Ville".
顯示國家名字,及其延伸詞,如首都是國家名字的延伸。
你可以使用SQL函數 REPLACE 或 MID.

select name,replace(capital,name,'') as 延伸词 from world
 where capital like concat(name,'%_')
--解题思路:本题思路与上一题相似,但题目要求显示国家名字的延伸词。巧用replace()函数,将name在capital中找到后替换为空,得到的就是除了name的延伸词。
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!