我有这个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
我正在寻找像ISNULL一样的IsEmpty函数。所以我可以,
ISEMPTY(@SKU, NULL)
这在SQL中是否可行。
答案 0 :(得分:43)
尝试NULLIF,如下所示
NULLIF(@SKU,'')
答案 1 :(得分:8)
请尝试:
SET @YourValue=ISNULL(NULLIF(@YourValue,' '), NULL)
如果value为NULL,为空或空格,则返回NULL。
注意:
如果两个表达式不相等,NULLIF
将返回第一个表达式。
如果表达式是等价的,NULLIF
将返回第一个表达式类型的空值。
答案 2 :(得分:7)
使用SET @SKU = NULLIF(@SKU,'')
将@SKU设置为null,其中@SKU等于第二个参数的值。
IsEmpty
不是内置的T-SQL函数,但可以使用NULLIF
来实现类似的行为。
答案 3 :(得分:1)
这可能是您正在寻找的:
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()。我完全忘了它存在。
答案 4 :(得分:0)
SELECT ISNULL( CASE StringColum1 WHEN '' THEN NULL ELSE textcolum1 END ,textcolum2)
答案 5 :(得分:0)
在下面的select
子句中尝试。
select ISNULL( nullif(EmptyOrNullOrBlankColumn,'' ),NULL)
在Where
条款下。
where ISNULL( nullif(EmptyOrNullOrBlankColumn,'' ),NULL) is not null
答案 6 :(得分:0)
如果您将 ' ' 视为空字符串,则可以使用
LEN(RTRIM(ISNULL(FieldName,''))) > 0