SQL Server中的空白测试

SQL Server中的空白测试,sql,sql-server,whitespace,Sql,Sql Server,Whitespace,我的表中有一些空白值,我似乎无法在IF语句中捕捉它们 我试过了 如果@ value =‘`/COD>和如果@ value = NULLU/,没有一个捕获空白值。有没有办法测试varchar是否完全是空白 啊哈!结果证明我测试空值是错误的。谢谢 如果长度(@value)=0或@value为空 (LTRIM(RTRIM(@Value))='' 应该这样做。要与NULL进行比较,请使用IS NULL关键字 --Generic example: SELECT * FROM MY_TABLE WHER

我的表中有一些空白值,我似乎无法在IF语句中捕捉它们

我试过了

<代码>如果@ value =‘`/COD>和<代码>如果@ value = NULLU/<代码>,没有一个捕获空白值。有没有办法测试varchar是否完全是空白

啊哈!结果证明我测试空值是错误的。谢谢

如果长度(@value)=0或@value为空

(LTRIM(RTRIM(@Value))=''

应该这样做。

要与NULL进行比较,请使用IS NULL关键字

--Generic example:
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD IS NULL;

--Instead of    

SELECT *
FROM MY_TABLE
WHERE SOME_FIELD = NULL;

您可能有多个空格(“”)的字段,因此如果您修剪这些空格,将获得更好的结果:

where ltrim(yourcolumnname) = ''

其中length(rtrim(ltrim(yourcolumnname))=0或者yourcolumnname为null

我只是做了一些测试,发现了一些有趣的东西。 我曾经这样写我的查询:

SELECT *
FROM TableA
WHERE Val IS NOT NULL
AND LEN(RTRIM(LTRIM(Val))) > 0
但是,实际上不需要检查null,只需在修剪值后检查长度

SELECT *
FROM TableA
WHERE LEN(RTRIM(LTRIM(Val))) > 0
此选项将删除空值以及仅包含空白的任何列

事实证明,您不需要修剪该值,因为SQL Server会忽略尾随空格,因此您实际上只需要这样做: 挑选* 从表格
其中LEN(Val)>0

而不是使用
LTRIM
RTRIM
执行过度的字符串操作,只需搜索表达式中的第一个“非空格”


或者将ANSI NULLS设置为OFF-我更愿意遵循SQL-92规范tho'和us IS NULLS可能缺少一些内容,但这根本不能纠正测试空白的方法。它纠正了检查null的语法,但这不是问题所要问的。只有在测量输入值时才需要Trim,而不需要空格。否则,len()会抓住一切。
SELECT *
FROM TableA
WHERE LEN(RTRIM(LTRIM(Val))) > 0
SELECT
            *
    FROM
            [Table]
    WHERE
            COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0