IsEmpty函数如SQL Server中的ISNULL?

时间:2013-08-06 11:01:45

标签: sql sql-server tsql sql-server-2008-r2

我有这个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中是否可行。

7 个答案:

答案 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