SQL 中 if 和 when 语句的区别

Difference between if and when statements in SQL

如果我有一个带有 number 列的 table 并且想要创建一个值为 'high'、'medium' 或 'low' 的新列根据数字列中的值,我可以使用 if/else 语句来执行此操作吗?如果是的话,这个怎么写?

我有使用 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

IF 语句控制流程并根据条件决定接下来要评估的内容,而 CASE 是一个 returns 所需值的函数。

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