ISNULL столбец SQL - PullRequest
       3

ISNULL столбец SQL

0 голосов
/ 23 ноября 2011

Проблема: Код читает каждую строку и должен определить, является ли она пустой или нет. Я хочу распечатать "работает", если столбец нулевой. В противном случае, это не должно делать ничего. Прямо сейчас это не работает. Это дает мне ошибку, что столбец не существует. (Тот, который указан в операторе if)

Вот код. Код:

DECLARE Employee_Cursor CURSOR FOR

SELECT [Description]  
FROM tblSubViews ts  
INNER JOIN tblViewSubViewJoin tvs  
ON ts.SubViewId = tvs.SubViewId Where tvs.ViewId = 4

OPEN Employee_Cursor

FETCH NEXT FROM Employee_Cursor
WHILE @@FETCH_STATUS = 0

BEGIN   
if (Description = null)
begin
print 'works'
end
   FETCH NEXT FROM Employee_Cursor
END
CLOSE Employee_Cursor
DEALLOCATE Employee_Cursor

Ответы [ 4 ]

3 голосов
/ 23 ноября 2011

NULL - это специальное значение в SQL - фактически это отсутствие значения.

Следовательно, поскольку это не значение, вы не можете сравнивать его с обычными средствами -необходимо использовать методы IS NULL или IS NOT NULL:

if (Description IS NULL)
begin
  print 'works'
end

Сравнение с IS NULL или IS NOT NULL даст вам искомый результат.

2 голосов
/ 23 ноября 2011

Нет необходимости в курсоре в этой ситуации

SELECT 
[Description],
ISNULL([Description]   ,'Works') AS text
FROM tblSubViews ts   
INNER JOIN 
tblViewSubViewJoin tvs   
ON 
ts.SubViewId = tvs.SubViewId 
Where 
tvs.ViewId = 4

Затем можно сократить это значение, добавив в условие WHERE дополнительный критерий, который выбирает только пустые столбцы описания?

2 голосов
/ 23 ноября 2011

Вы не можете сравнивать с NULL, используя равно, вы должны использовать ID (Description IS NULL)

При использовании курсоров также необходимо выбрать в переменную:

  FETCH NEXT FROM Employee_Cursor INTO @Description 
  WHILE @@FETCH_STATUS = 0

Вы быКонечно, нужно объявить @Description для типа, подходящего для столбца,

0 голосов
/ 23 ноября 2011

Используйте функцию isnull() в своем запросе, согласно вашей логике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...