2013-08-06 2 views
6

У меня есть этот SQL,Функция IsEmpty как ISNULL в SQL Server?

IF(@ID = '') 
BEGIN 
    SET @ID = NULL; 
END 

IF(@Name = '') 
BEGIN 
    SET @Name = NULL; 
END 

IF(@PhoneNumber = '') 
BEGIN 
    SET @PhoneNumber = NULL;  
END 

IF(@Price = '') 
BEGIN 
    SET @Price = NULL; 
END 

IF(@NewPrice = '') 
BEGIN 
    SET @NewPrice = NULL; 
END 

IF(@ModelNumber = '') 
BEGIN 
    SET @ModelNumber = NULL; 
END 

IF(@SKU = '') 
BEGIN 
    SET @SKU = NULL; 
END 

Ищу функцию IsEmpty как ISNULL. Чтобы я мог,

ISEMPTY(@SKU, NULL) 

Возможно ли это в SQL.

ответ

35

Попробуйте NULLIF ниже

NULLIF(@SKU,'') 
+2

Я проверяю Пустой не null – user960567

+4

Это правильно Спасибо – user960567

+1

Английская версия выше страницы NULLIF здесь: http://technet.microsoft.com/en-gb/library /ms177562%28v=sql.105%29.aspx – GazB

1

Это может быть то, что вы ищете:

SET @SKU = CASE @SKU WHEN '' THEN NULL ELSE @SKU END 

EDIT

Для всех переменных ...

SELECT 
    @ID = CASE @ID WHEN '' THEN NULL ELSE @ID END, 
    @Name = CASE @Name WHEN '' THEN NULL ELSE @Name END, 
    @PhoneNumber = CASE @PhoneNumber WHEN '' THEN NULL ELSE @PhoneNumber END, 
    @Price = CASE @Price WHEN '' THEN NULL ELSE @Price END, 
    @NewPrice = CASE @NewPrice WHEN '' THEN NULL ELSE @NewPrice END, 
    @ModelNumber = CASE @ModelNumber WHEN '' THEN NULL ELSE @ModelNumber END, 
    @SKU = CASE @SKU WHEN '' THEN NULL ELSE @SKU END¸ 

edit2

Если кто использует вроде кода, который я предложил, забудьте об этом и используйте NULLIF(), как предлагали другие ребята. Я ПОЛНОСТЬЮ ЗАБЫЛ, что он существует.

+0

Номер кода, есть ли простая функция avilable – user960567

6

Используйте SET @SKU = NULLIF(@SKU,'') установить @SKU обнулить где @SKU равно значению второго аргумента.

IsEmpty не является встроенной функцией T-SQL, но NULLIF может использоваться для достижения аналогичного поведения.

5

Пожалуйста, попробуйте:

SET @YourValue=ISNULL(NULLIF(@YourValue,' '), NULL) 

, который возвращает NULL, если значение равно NULL, пустой или пробел.

Примечание: NULLIF возвращает первое выражение, если два выражения не являются эквивалентными. Если выражения эквивалентны, NULLIF возвращает нулевое значение типа первого выражения.

+2

не IsNull (<любое значение в мире>, NULL) избыточно? –

+0

Да ... Мы можем избежать этого. – TechDo

+0

может показаться излишним, но это ответ на вопрос в названии. если мы заменим NULL в круглых скобках на <любое другое значение>, мы получим совершенно функциональную функцию IsEmpty. и это именно то, что я искал. следующий код изменяет пустые строки на сообщение об ошибке: 'ISNULL (NULLIF (@YourValue, ''), 'No value included')' – robotik

Смежные вопросы