我的表中有一些空白值,我似乎无法在 IF 语句中捕获它们。
我试过了
IF @value = ''
并且if @value = NULL
没有一个人能捕捉到空白值。有什么方法可以测试 varchar 是否完全是空格?
啊哈!原来我正在测试 null 错误。谢谢。
我的表中有一些空白值,我似乎无法在 IF 语句中捕获它们。
我试过了
IF @value = ''
并且if @value = NULL
没有一个人能捕捉到空白值。有什么方法可以测试 varchar 是否完全是空格?
啊哈!原来我正在测试 null 错误。谢谢。
ltrim(rtrim(isNull(@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;
如果长度(@value)= 0 或@value 为空
(LTRIM(RTRIM(@Value))=''
应该做的伎俩。
其中 length(rtrim(ltrim(yourcolumnname))) = 0 或 yourcolumnname 为空
我只是做了一些测试,发现了一些有趣的东西。我曾经这样写我的查询:
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 忽略尾随空格,所以您实际上需要它:SELECT * FROM TableA WHERE LEN(Val) > 0
LTRIM
与其使用AND执行过多的字符串操作RTRIM
,不如在表达式中搜索第一个“非空格”。
SELECT
*
FROM
[Table]
WHERE
COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0
您可能有多个空格 (' ') 的字段,因此如果您修剪它,您将获得更好的结果:
where ltrim(yourcolumnname) = ''