我在下面给出了一个查询
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
查询中,我尝试根据Name
值返回b.ApId
。
但即使b.ApId
不为空,我也会收到B.Name
而不是Ap.Name
。
任何人都可以指出我出错的地方。
答案 0 :(得分:2)
!=将评估值,而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
答案 1 :(得分:1)
使用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