16

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

4

7 回答 7

58

尝试NULLIF如下

NULLIF(@SKU,'')
于 2013-08-06T11:05:27.403 回答
10

请试试:

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

如果值为 NULL、空或空格,则返回 NULL。

注意: NULLIF如果两个表达式不等价,则返回第一个表达式。如果表达式等价,则NULLIF返回第一个表达式类型的空值。

于 2013-08-06T11:15:41.737 回答
7

用于SET @SKU = NULLIF(@SKU,'')将@SKU 设置为null,其中@SKU 等于第二个参数的值。

IsEmpty不是内置的 T-SQL 函数,但NULLIF可用于实现类似的行为。

于 2013-08-06T11:09:54.727 回答
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¸

编辑2

如果有人使用我建议的那种代码,忘记它并像其他人建议的那样使用 NULLIF() 。我完全忘记了它的存在。

于 2013-08-06T11:02:57.210 回答
1

试试下面的 inselect子句。

select ISNULL( nullif(EmptyOrNullOrBlankColumn,'' ),NULL)

下面在Where条款中。

where ISNULL( nullif(EmptyOrNullOrBlankColumn,'' ),NULL) is not null
于 2019-03-29T06:17:46.140 回答
0
SELECT ISNULL( CASE StringColum1  WHEN '' THEN NULL ELSE textcolum1 END ,textcolum2) 
于 2019-01-10T07:00:29.363 回答
0

如果您将 ' ' 视为空字符串,则可以使用

LEN(RTRIM(ISNULL(字段名,''))) > 0

于 2021-01-12T10:58:16.723 回答