什么是CASE语法?

信息化聊科技 2025-02-05 14:10:38
什么是CASE语法?CASE语法就像是我们在生活中做选择题或者判断题一样。它会根据我们给出的条件,来判断应该选择哪个结果。 比如,我们现在有一个movies表,里面有一个year字段,表示电影的年份。我们想把这些年份转换成“80前”、“80后”、“90后”和“00后”这样的描述。 但是,SQL里并没有现成的函数能直接帮我们完成这个转换。所以,我们就需要用CASE语法来自己写一个逻辑。 怎么看懂CASE语法?我们先来看一个简单的CASE语法例子: sql复制代码 select case when year < 1980 then '80前' when year >= 1980 and year < 1990 then '80后' when year > 1990 and year < 2000 then '90后' else '00后' end as new_year, year, title from movies 这段话的意思是: CASE开始,END结束:中间的部分就是我们的判断逻辑。WHEN ... THEN ...:每个WHEN后面跟一个条件,THEN后面跟这个条件满足时的结果。ELSE:如果所有的WHEN条件都不满足,就执行ELSE后面的结果。AS new_year:我们把CASE的计算结果起了一个新名字,叫做new_year。所以,这个SQL会遍历movies表里的每一行数据: 如果year小于1980,那么new_year就是“80前”。如果year在1980到1989之间(包括1980,不包括1990),那么new_year就是“80后”。如果year在1990到1999之间(不包括1990,包括1999之前的所有年份,但这里写错了应为>=1990),那么new_year就是“90后”。如果都不满足,那new_year就是“00后”。 CASE语法支持多个字段吗?你提出了一个很好的问题:CASE里能不能用多个字段来做判断呢? 答案是:可以的! 我们来看一个修改后的例子: sql复制代码 select case when year < 1980 or id = 1 then '80前' when year >= 1980 and year < 1990 then '80后' when year >= 1990 and year < 2000 then '90后' else '00后' end as new_year, year, title from movies 这里,我在第一个WHEN条件里加了一个or id = 1。 这意味着: 如果year小于1980,或者id等于1,那么new_year就是“80前”。其他的判断逻辑和之前一样。所以,CASE语法不仅可以用单个字段来判断,还可以用多个字段组合起来判断。只要满足条件,就会返回对应的结果。 试一下就知道了!现在,你应该对CASE语法有了初步的了解。但是,光看理论是不够的,建议你亲自试一下这个SQL,看看结果是不是和你想象的一样。 通过实践,你会发现CASE语法真的很强大,它可以帮助我们完成很多复杂的逻辑计算和转换。而且,随着你不断尝试和练习,你会越来越擅长使用它!
0 阅读:0

信息化聊科技

简介:感谢大家的关注