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