[SQL] Проверка на нуль?
Если ты, в случае пустого значения, захочешь присвоить своей переменной свое значение, то поможет ф-ция ISNULL(перем, знач подробнее в хелпе почитай
если этот запрос используется в хранимой процедуре или ф-ции, то просто потом обработай значение сам (if @X = NULL) и т.д.
если этот запрос используется в хранимой процедуре или ф-ции, то просто потом обработай значение сам (if @X = NULL) и т.д.
Да, выражение используется в хранимой процедуре, но почему-то переменная не обрабатывается.
Делаю так:
PRINT 'DEBUG'
IF @XID = NULL PRINT 'NULL'
ELSE PRINT 'NOT NULL'
PRINT 'END DEBUG'
Результат:
DEBUG
NOT NULL
END DEBUG
Делаю так:
PRINT 'DEBUG'
IF @XID != NULL PRINT 'NOT NULL'
ELSE PRINT 'NULL'
PRINT 'END DEBUG'
Получаю:
DEBUG
NULL
END DEBUG
При том, что больше ничего не менялось!
Получается, что переменная не является ни NULL ни NOT NULL. Как это расценивать?!
Делаю так:
PRINT 'DEBUG'
IF @XID = NULL PRINT 'NULL'
ELSE PRINT 'NOT NULL'
PRINT 'END DEBUG'
Результат:
DEBUG
NOT NULL
END DEBUG
Делаю так:
PRINT 'DEBUG'
IF @XID != NULL PRINT 'NOT NULL'
ELSE PRINT 'NULL'
PRINT 'END DEBUG'
Получаю:
DEBUG
NULL
END DEBUG
При том, что больше ничего не менялось!
Получается, что переменная не является ни NULL ни NOT NULL. Как это расценивать?!
Истинность выражения NULL==NULL есть NULL
Потому как NULL -- это ХЗ
Потому как NULL -- это ХЗ
IF @XID != NULL PRINT 'NOT NULL'не знаю, как в мсскл (это же он:? но скажем в постгресе проверка на нулл делается так :
if (xid is [not] null)
в mssql пишется так
IF @X IS NULL
SET @X = 0
IF @X IS NULL
SET @X = 0
Так и есть. Спасибо.
ботаем троичную логику....
да в mssql null != null (если не установлен ANSI_NULLS)
но при этом меня поле identity null не позволяет вводить два nullа
но при этом меня поле identity null не позволяет вводить два nullа
это происходит по двум причинам:
1) MSSQL - недостойная СУ(Р)БД
2) Нехрен пихать NULL в identity (primary key) поле...
1) MSSQL - недостойная СУ(Р)БД
2) Нехрен пихать NULL в identity (primary key) поле...
ой я ощибся не identity а unique constraint
Оставить комментарий
Slavaga
Делаю что-то вроде этого:SET @XID = (SELECT Employees.EmployeeID FROM Employees, Users WHERE
LastName = @XLastName AND
FirstName = @XFirstName AND
Patronymic = @XPatronymic AND
GroupID = (SELECT GroupID FROM Groups WHERE GroupName = 'Group1'
После выполнения SELECT'а либо возвращается одно число - идентификатор, либо ничего не возвращается.
Как узнать, что ничего не возвратилось?!
Можно сделать так:
IF EXISTS SELECT (...) SET @XID = (SELECT ...)
Можно ли как-нить покороче?