CASE WHEN

CASE WHEN 简单值与范围判断

CASE 表达式有两种写法,一种用于等值匹配,一种用于范围判断。

简单值匹配(CASE 后跟字段)

这种情况下 CASE 后面直接跟字段名,每个 WHEN 后面是一个具体的值,相当于 = 比较:

SELECT [id]
      ,[name]
      ,CASE [type] WHEN 1 THEN '高级' WHEN 2 THEN '中级' ELSE '初级' END AS typename
FROM [Test].[dbo].[Category]
GOCode language: PHP (php)

范围判断(CASE 后不跟字段)

如果是范围比较(如 >、>=、< 等),CASE 后面不需要字段,直接在 WHEN 里面写条件表达式:

SELECT [id]
      ,[name]
      ,CASE WHEN [type] > 5 THEN '高级' WHEN [type] > 1 THEN '中级' ELSE '初级' END AS typename
FROM [Test].[dbo].[Category]
GOCode language: PHP (php)

注意:CASE 表达式按顺序匹配,一旦满足某个 WHEN 条件就返回对应结果,不再继续判断后续分支。因此范围判断时需要注意条件的先后顺序,范围大的应放在后面,避免被范围小的条件提前拦截。

Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注