如何在mySQL中使用case来编写查询
显示学生姓名,出生日期和星座。 使用十二星座作为别名
一个。 白羊座3月21日 - 4月19日
湾 金牛座20日 - 5月20日
C。 双子座5月21日 - 6月20日
d。 癌症Jun21 - Jul22
即 Leo7月23日 - 8月22日
F。 处女座8月23日 - 9月22日
G。 天秤座9月23日 - 10月22日
H。 天蝎座10月23日 - 11月21日
一世。 射手座11月22日至12月21日
学家 摩羯座12月22日 - 1月19日
ķ。 水瓶座1月20日 - 2月18日
湖 双鱼座19日 - 3月20日
我写的代码是:
select sname, sdob, case
when sdob between (select date('____-03-21')) and (select date('____-04-19')) then 'Aries'
when sdob between '%-04-20' and '%-05-20' then 'Tarus'
when sdob between '%-05-21' and '%-06-20' then 'Gemini'
when sdob between '%-06-21' and '%-07-19' then 'Cancer'
when sdob between '%-07-21' and '%-08-19' then 'Leo'
when sdob between '%-08-21' and '%-09-19' then 'Virgo'
when sdob between '%-09-21' and '%-10-19' then 'Libra'
when sdob between ( sdob like'%-10-21') and ( sdob like'%-11-19') then 'Scropio'
when sdob between ( sdob like'%-11-21') and ( sdob like'%-12-19') then 'Sagittarious'
when sdob between ( sdob like'%-12-21') and ( sdob like'%-01-19') then 'Capricon'
when sdob between '____-01-21' and '____-02-19' then 'Aquarius'
when sdob between '%-02-21' and '%-03-19' then 'Pisces'
end 'SunSign'
from student;
但它会在输出上的SunSign字段中显示所有空值。
如果sdob是日期列,那么MONTH
和DAYOFMONTH
函数可以与CASE语句一起使用,如下所示:
select sname, sdob,
case
WHEN (MONTH(sdob) = 3 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 4 AND DAYOFMONTH(sdob) <= 19) THEN 'Aries'
WHEN (MONTH(sdob) = 4 AND DAYOFMONTH(sdob) >= 20) OR (MONTH(sdob) = 5 AND DAYOFMONTH(sdob) <= 20) THEN 'Taurus'
WHEN (MONTH(sdob) = 5 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 6 AND DAYOFMONTH(sdob) <= 20) THEN 'Gemini'
WHEN (MONTH(sdob) = 6 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 7 AND DAYOFMONTH(sdob) <= 20) THEN 'Cancer'
WHEN (MONTH(sdob) = 7 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 8 AND DAYOFMONTH(sdob) <= 20) THEN 'Leo'
WHEN (MONTH(sdob) = 8 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 9 AND DAYOFMONTH(sdob) <= 20) THEN 'Virgo'
WHEN (MONTH(sdob) = 9 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 10 AND DAYOFMONTH(sdob) <= 20) THEN 'Libra'
WHEN (MONTH(sdob) = 10 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 11 AND DAYOFMONTH(sdob) <= 20) THEN 'Scorpio'
WHEN (MONTH(sdob) = 11 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 12 AND DAYOFMONTH(sdob) <= 20) THEN 'Sagittarius'
WHEN (MONTH(sdob) = 12 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 1 AND DAYOFMONTH(sdob) <= 20) THEN 'Capricorn'
WHEN (MONTH(sdob) = 1 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 2 AND DAYOFMONTH(sdob) <= 20) THEN 'Aquarius'
WHEN (MONTH(sdob) = 2 AND DAYOFMONTH(sdob) >= 21) OR (MONTH(sdob) = 3 AND DAYOFMONTH(sdob) <= 20) THEN 'Pisces'
end 'SunSign'
from student;
请注意,通过稍微更改日期限制,我已经关闭了一些范围内的差距(例如天秤座和天蝎座之间)。
链接地址: http://www.djcxy.com/p/65607.html上一篇: How to write a query for zodiac using case in mySQL
下一篇: SQL Table that calculates values from another SQL table