使用带有isnull和else的CASE语句

Myu*_*ran 3 sql t-sql case

我有一个[Color]列,包含'Black','Red',NULL,'WW','RR'

我想要一个应该有的专栏

if color black then 'B'
if color red then 'r'
if color is Null then 'Empty'
for all other entries 'n/a'
Run Code Online (Sandbox Code Playgroud)

我正在使用follwoing,但它显示错误

SELECT Name,
        CASE color
            WHEN 'black' THEN 'b'
            WHEN 'red' THEN 'r'
            WHEN ISNULL(color, 'empty')
            else 'n/a'
           END AS Color_code
FROM SalesLT.Product;
Run Code Online (Sandbox Code Playgroud)

Har*_* CO 5

您可以使用任一CASE结构执行此操作,但如果使用该CASE fieldname WHEN方法则无法调用函数,因此您可以使用CASE WHEN fieldname condition:

SELECT Name,
        CASE WHEN color = 'black' THEN 'b'
            WHEN color = 'red' THEN 'r'
            WHEN color IS NULL THEN  'empty'
            else 'n/a'
           END AS Color_code
FROM SalesLT.Product;
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT Name,
        CASE color
            WHEN 'black' THEN 'b'
            WHEN 'red' THEN 'r'
            WHEN NULL THEN 'empty'
            else 'n/a'
           END AS Color_code
FROM SalesLT.Product;
Run Code Online (Sandbox Code Playgroud)


sca*_*dge 5

你可以尝试这个方法

  SELECT Name,
          CASE 
              WHEN color = 'black' THEN 'b'
              WHEN color = 'red' THEN 'r'
              WHEN color is null  THEN  'empty'
                ELSE 'n/a'
          END AS Color_code
  FROM SalesLT.Product;
Run Code Online (Sandbox Code Playgroud)