У меня есть следующий код:Почему оператор Select не присваивает пустую строку или значение null, если она не возвращает результат?
declare @testValue nvarchar(50) = 'TEST';
select @testValue = 'NOTUSED' where 1 > 2;
select @testValue; -- Outputs 'TEST'
select @testValue = 'USED' where 2 > 1;
select @testValue; -- Outputs 'USED'
С выше, первое задание никогда не используется, потому что, где положение не удается. Второй выполняется правильно и возвращается.
Почему SQL не возвращает null в этом случае и присваивает значение NULL @testValue после первого присваивания, где предложение where терпит неудачу?
Являются ли эти> знаки ориентированными прямо? где 2> 1 верно, верно? – mikey
также значение похоже, должно быть testValue – swestner
Хм. Вы правы. Я получил его назад. Первый оператор select при запуске вернет пустой набор результатов. Но @testValue никогда не устанавливается в NULL или пустую строку в этом случае. Он по-прежнему сохраняет значение «TEST». Мне любопытно, почему это происходит, и если я что-то упускаю. – SamIAm