我正在尝试修复存储过程中的问题,并遇到了令我烦恼的问题。
基本上,isnull
按预期在T0中的一个记录工作,但在另一个记录中不起作用,T0.FatherCard
为NULL。我不明白为什么。
SELECT *
FROM OINV T0
WHERE ISNULL(T0.FatherCard, T0.CardCode) = 'C0189'
按预期返回完整的数据行。
SELECT *
FROM OINV T0
WHERE ISNULL(T0.FatherCard, T0.CardCode) = 'C0817'
什么都不返回。我期待一整行数据。
在这两种情况下,FatherCard = NULL
CardCode FatherCard Table
------------------------------
C0189 NULL OINV
C0817 NULL OINV
FatherCard
和CardCode
属于同一类型(nvarchar
)和长度(50)。
如果我删除了ISNULL
功能,只需选择WHERE T0.CardCode = C0817
即可按预期工作。
对于T0.FatherCard
评估,ISNULL
是否可能实际上不是NULL,并且返回一些其他值?
答案 0 :(得分:2)
有两种可能性。
'C0817 '
检查使用:
SELECT '[' + CardCode + ']', ISNULL(FatherCard, 'Yes is NULL')
FROM OINV
WHERE RTRIM(CardCode) = 'C0817'
答案 1 :(得分:0)
请使用
where columnname is null