当您使用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
吗?
答案 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