SQL中的if和when语句之间的区别

时间:2019-07-01 10:34:02

标签: sql-server if-statement case-when

如果我有一个带有number列的表,并且想基于number列中的值创建一个值为'high','medium'或'low'的新列,我可以使用如果/否则声明要执行此操作?如果是这样,怎么写?

我具有使用when / then语句创建列的代码:

use master

select 
    *, 
    case
       when (number > 40) then 'high'
       when (number between 30 and 40) then 'medium'
       else 'low'
    end as 'newColumn'
from 
    myTable

基本上,我试图理解if / else和when / then语句之间的区别,以及为什么要在另一个语句上使用它。

这个if / else代码不起作用,但是我不知道是否是因为我的编码错误:

use master

select 
    *,
    if (number > 40)
      'high'
    else if (number between 30 and 40)
      'medium'
    else 'low'
from 
    test

1 个答案:

答案 0 :(得分:1)

IF语句控制流并根据条件决定下一步要评估的内容,而CASE是返回期望值的函数。

当您将单个表达式与一系列唯一值进行比较时,CASE语句比IF语句更具可读性,而且效率更高。