Я пытаюсь исправить проблему в хранимой процедуре и столкнулся с проблемой, которая меня беспокоит.
По сути, 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
на самом деле не NULL для целей оценки ISNULL
и возвращает какое-то другое значение?
SELECT *, isnull(T0.FatherCard,T0.CardCode) FROM OINV T0
и опубликуйте, что вы получили - person Niyoko   schedule 04.11.2016