select case 'NULL' when 'NULL' then 'f' end as out
输出:f
但
select case (select (SELECT LEFT(l.list,LEN(l.list)-1)
FROM
(SELECT o.Reciting_Path + '|' + o.Declaimer +',' AS [text()]
FROM Poetry_Reciting AS o
where o.Poetry_Id=6764
FOR XML PATH(''))l(list)) ) when 'NULL' then 'N' end as dd
应该只返回NULL并且 NULL 是正确的,但 case 语句不起作用。
我想要输出中的“N”
这里有两点混淆。
首先是你似乎在思考
'NULL'
并且NULL
是一样的;他们不是。前者是字符串文字,后者仅表示没有值。第二个是您可以
NULL
在相等比较中使用;而你不能。尝试这个:结果:
原因是
NULL
未知的 - 因此 SQL Server 无法告诉您它是否等于特定值(甚至是另一个NULL
值)。要检查一个值是否为NULL
,你不能说CASE WHEN value = NULL
orCASE value WHEN NULL
,但你可以说CASE WHEN value IS NULL
:结果:
现在,我认为有更好的方法来完成您似乎需要的事情(我不确定我是否完全理解这里的要求),但在短期内您可以通过以下方式纠正这个问题: