- %是0个或多个字符,结合like使用
- _是1个字符,结合like使用
- concat函数:合并两个或以上的字符串
- replace函数:
REPLACE(‘vessel’,‘e’,‘a’) -> ‘vassal’
-
case函数
CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 ELSE def_value END
例:给出名字和所属大洲的名字,其中所属大洲的名字是Oceania的改成Australasia,国名的第一个字符是N
SELECT name, CASE WHEN continent='Oceania' THEN 'Australasia' ELSE continent END FROM world WHERE name LIKE 'N%'
-
all函数
我們可以用ALL 這個詞對一個列表進行>=或>或<或<=充當比較。例如,你可以用此查詢找到世界上最大的國家(以人口計算):SELECT name FROM world WHERE population >= ALL(SELECT population FROM world WHERE population>0)
-
我們可以在子查詢,參閱外部查詢的數值。我們為表格再命名,便可以分別內外兩個不同的表格。
在每一個州中找出最大面積的國家,列出洲份 continent, 國家名字 name 及面積 area。 (有些國家的記錄中,AREA是NULL,沒有填入資料的。)SELECT continent, name, area FROM world x WHERE area >= ALL (SELECT area FROM world y WHERE y.continent=x.continent AND area>0)
题1. 找出所有首都和其國家名字,而首都要有國家名字中出現。
select capital, name from world where capital like concat('%',name,'%');
题2:“Monaco-Ville"是合併國家名字 “Monaco” 和延伸詞”-Ville".
顯示國家名字,及其延伸詞,如首都是國家名字的延伸。
你可以使用SQL函數 REPLACE 或 MID.
select name, replace(capital,name,'') from world where capital LIKE concat(name,'%_');
题3:在每一個州中找出最大面積的國家,列出洲份 continent, 國家名字 name 及面積 area。 (有些國家的記錄中,AREA是NULL,沒有填入資料的。)
SELECT continent, name, area FROM world x
WHERE area >= ALL
(SELECT area FROM world y
WHERE y.continent=x.continent
AND area>0)
题4:有些國家的人口是同洲份的所有其他國的3倍或以上。列出 國家名字name 和 洲份 continent
select name,continent from world x
where population/3 >=
all(select population from world y
where y.continent = x.continent and y.name != x.name)