您的位置首页百科知识

case when 两列之间的比较?

case when 两列之间的比较?

case函数的一般有两种用法:

(1)方式一

case 字段名 when 字段值 then 值1 else 值2 end

1

这一种是之前比较常用的一种方式,相当于是大部分编程语言中的switch case的用法,通过字段名,去匹配字段值,适合字段值比较固定的情况下使用,特点是比较简洁易用。

示例:

下面的sql语句就是就是用来判断是好孩子,我们偏爱tom所以我们认为他是好孩子,jack是坏孩子,其他的都是普通孩子

select fname, (

case fname

when 'tom' then '好孩子'

when 'jack' then '坏孩子'

else '普通孩子'

end

) as isgoodchild

from T_person

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

(2)方式二

case when 条件 then 值1 else 值2 end

1

这一种应该用过的人比较少一些,一般情况下也不需要使用这种判断方式,如果情况允许的话,最好是在where子句中进行条件筛选,避免数据库不必要的性能消耗。但是一些特殊的情况下还是会用到的。这种用法的特点其他编程语言中的if else条件语句十分相似的 when后面的是一个条件表达式,根据表达式的结果来进行决定是否为then后面的值,使用起来比较灵活,可以适应更多的复杂情况。

示例:

比如下面的sql语句判断一个人的体重是不是正常,如果体重大于50偏重,小于40偏轻,介于40到50之间正常。

select

fname,fweight,(

case

when fweight <40 then 'thin'

when fweight > 50 then 'fat'

else 'ok'

end

) as isnormal

from T_person.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

事实上绝大部分的第一种用法都是可以转换为第二种的形式来写的,但是这样写的时候会显得SQL语句比较繁琐,不易阅读,大部分情况下还是建议使用第一种用法,但遇到无法处理的情况下再使用第二种进行处理。

抖音看短剧