如何使用标量函数检查CASE语句中的NULL?

时间:2012-05-23 13:27:40

标签: sql-server tsql

当您使用NULL时,如何在CASE声明中检查Scalar Function

我的原始查询是......但它失败了

SELECT  CASE dbo.fnCarerResponse('')
          WHEN NULL THEN 'Pass'
          ELSE 'Fail'
        END

我阅读了SO关于使用IS NULL的问题,就像这样......

SELECT  CASE dbo.fnCarerResponse('') IS NULL 
          WHEN NULL THEN 'Pass'
          ELSE 'Fail'
        END        

但这会产生incorrect syntax near the keyword is错误

Scalar Function可以有CASE吗?

5 个答案:

答案 0 :(得分:30)

您使用的是错误的CASE样式 - 您需要使用CASE WHEN <expression> THEN而不是CASE <expression> WHEN <expression> then

SELECT CASE 
 WHEN dbo.fnCarerResponse('') IS NULL
 THEN 'Pass'
 ELSE 'Fail'
END

答案 1 :(得分:8)

SELECT CASE 
         WHEN dbo.fnCarerResponse('') IS NULL 
         THEN 'Pass'
         ELSE 'Fail'
       END   

答案 2 :(得分:5)

SELECT  CASE 
          WHEN dbo.fnCarerResponse('') is NULL THEN 'Pass'
          ELSE 'Fail'
        END

答案 3 :(得分:0)

在列表的上下文中使用时(例如SELECT查询的列的定义),整个表达式必须像这样用括号括起来。

     ,LastEditorEmail = (SELECT CASE
        WHEN  CF.LastModifiedBy IS NULL THEN
            NULL
        ELSE
            UE.Email
    END)

答案 4 :(得分:0)

您也可以使用这种方式:

SELECT   CASE ISNULL(dbo.fnCarerResponse(''),'NULLVALUE')
           WHEN 'NULLVALUE' THEN 'Pass'
           ELSE 'Fail'
         END