25

当您NULL使用?CASEScalar Function

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

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

我读了关于 using的SOIS NULL问题,就像这样......

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

但这给出了incorrect syntax near the keyword is错误

你能有一个Scalar FunctionCASE

4

5 回答 5

35

您使用了错误的样式CASE- 您需要使用CASE WHEN <expression> THENnot CASE <expression> WHEN <expression> then

SELECT CASE 
 WHEN dbo.fnCarerResponse('') IS NULL
 THEN 'Pass'
 ELSE 'Fail'
END
于 2012-05-23T13:29:27.947 回答
9
SELECT CASE 
         WHEN dbo.fnCarerResponse('') IS NULL 
         THEN 'Pass'
         ELSE 'Fail'
       END   
于 2012-05-23T13:29:58.600 回答
5
SELECT  CASE 
          WHEN dbo.fnCarerResponse('') is NULL THEN 'Pass'
          ELSE 'Fail'
        END
于 2012-05-23T13:30:04.813 回答
1

您也可以使用这种方式:

SELECT   CASE ISNULL(dbo.fnCarerResponse(''),'NULLVALUE')
           WHEN 'NULLVALUE' THEN 'Pass'
           ELSE 'Fail'
         END
于 2020-04-06T20:36:59.947 回答
0

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

     ,LastEditorEmail = (SELECT CASE
        WHEN  CF.LastModifiedBy IS NULL THEN
            NULL
        ELSE
            UE.Email
    END)
于 2020-04-06T17:49:58.940 回答