不等于空在SQL Server
问题描述:
没有工作,我有以下不等于空在SQL Server
SELECT
B.[Date],
B.[Detail],
B.[Number],
B.[Total],
CASE WHEN B.[ApId] != null THEN Ap.Name ELSE B.[Name]END Name,
FROM [Bacs] B
LEFT JOIN Table ap ON b.ApId= ap.Id
查询给在Case When
查询我想基础上,b.ApId
值返回Name
。 但即使b.ApId
不为空我得到B.Name
而不是Ap.Name
。
任何人都可以指出我要去哪里错了。
答
!=将评估值,而NULL不是值。
因此,您必须使用IS NULL
或IS NOT NULL
来比较空值。
SELECT
B.[Date],
B.[Detail],
B.[Number],
B.[Total],
CASE WHEN B.[ApId] is not null THEN Ap.Name ELSE B.[Name]END Name,
FROM [Bacs] B
LEFT JOIN Table ap ON b.ApId= ap.Id
答
使用IS NOT NULL
,IS NULL
与NULL
值进行比较,或者使用ISNULL
,COALESCE
功能
SELECT
B.[Date],
B.[Detail],
B.[Number],
B.[Total],
CASE WHEN B.[ApId] IS NOT NULL THEN Ap.Name ELSE B.[Name] END Name
-- ISNULL(Ap.Name, B.[Name]) as Name
-- COALESCE(Ap.Name, B.[Name],'') as Name
FROM [Bacs] B
LEFT JOIN Table ap ON b.ApId= ap.Id
为null,则使用'IS NULL'或'比较IS NOT NULL'(除非'ANSI_NULLS'是关闭,但我不会推荐这么做)。 – ZLK
@ZLK工作得很好。你可以添加它作为答案。以便我可以将其标记为答案。 –