Функция IsEmpty, такая как ISNULL в SQL Server?

у меня есть этот sql,

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.

4 ответов


попробовать функция nullif ниже

NULLIF(@SKU,'')

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

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


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

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

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

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


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

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

редактировать

для всех ваших переменных...

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 (), как предлагали другие ребята. Я совершенно забыл о его существовании.