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