一、LIKE
1.Bahamas 巴哈馬”中有三個 a,還有嗎?
找出所有國家,其名字包括三個或以上的a。
语句:
SELECT name FROM world
WHERE name LIKE '%a%a%a%';
2、“Mexico 墨西哥”的首都是”Mexico City”。
顯示所有國家名字,其首都是國家名字加上”City”。
concat函数:用于将两个或多个字符串合并成一个字符串。
SELECT CONCAT(string1, string2, string3, ...)
--string1、string2、string3是要合并的字符串。可以输入两个或多个参数,每个参数都必须是字符串类型。
语句:
SELECT name
FROM world
WHERE capital LIKE concat(name,' city');
3、找出所有首都和其國家名字,而首都要有國家名字中出現。
语句:
SELECT capital,name
FROM world
WHERE capital LIKE concat('%',name,'%');
4、找出所有首都和其國家名字,而首都是國家名字的延伸。
你應顯示 Mexico City,因它比其國家名字 Mexico 長。
你不應顯示 Luxembourg,因它的首都和國家名相是相同的。
语句:
SELECT name,capital
FROM world
WHERE capital LIKE concat(name,'_%');
5、"Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville".
顯示國家名字,及其延伸詞,如首都是國家名字的延伸。
你可以使用SQL函数REPLACE或 MID.
REPLACE函数用于在字符串中替换一个子串为另一个子串。它的语法如下:
REPLACE(原字符串, 要替换的字符串, 替换后的字符串)
MID函数用于截取字符串中的一部分,其语法如下:
MID(原字符串, 起始位置, 截取长度)
语句:
--REPLACE函数
SELECT name,REPLACE(capital,name,'')
FROM world
WHERE capital LIKE concat(name,'_%');
二、ORDER BY
1、The expression subject IN ('Chemistry','Physics') can be used as a value - it will be 0 or 1.
Show the 1984 winners and subject ordered by subject and winner name; but list Chemistry and Physics last.
可以将表达式主题IN(“化学”,“物理”)用作值,可以是0或1。
查找1984年获奖者和主题,按主题和获胜者名称排序,并把化学奖和物理奖排到最后面显示
语句:
SELECT winner, subject
FROM nobel
WHERE yr=1984
ORDER BY subject IN ('Physics','Chemistry'),subject,winner;
--先设subject为Physics和Chemistry值为1,其他种类值为0;然后先按升序排序subject同种类subject按winner升序排。
2、列出爵士的獲獎者、年份、獎頁(爵士的名字以Sir開始)。先顯示最新獲獎者,然後同年再按名稱順序排列。
语句:
SELECT winner,yr,subject
FROM nobel
WHERE winner LIKE "Sir%"
ORDER BY yr desc,winner;
三、SELECT WITH SELECT
1、Germany德國(人口8000萬),在Europe歐洲國家的人口最多。Austria奧地利(人口850萬)擁有德國總人口的11%。
顯示歐洲的國家名稱name和每個國家的人口population。以德國的人口的百分比作人口顯示。
(1)ROUND函数:用于将一个数值数据类型的值四舍五入到指定的小数位数。
ROUND(expression, [decimal_places])
--expression表示要进行四舍五入的数值表达式,decimal_places表示要保留的小数位数。如果省略decimal_places参数,则默认将数值四舍五入到整数。
语句:
select name,concat(round(population/(select population from world where name='Germany')*100),'%')
from world
where continent='Europe';