很简单,以下哪种方法更适合在WHERE子句中检索FIELD_NAMENOT NULL和NOT Empty的记录
WHERE DATALENGTH(FIELD_NAME) > 0
Run Code Online (Sandbox Code Playgroud)
或者
WHERE ISNULL(FIELD_NAME, '') <> ''
Run Code Online (Sandbox Code Playgroud)
我被告知第一种方法会为某些类型的字段提供虚假结果......同意吗?
小智 5
首先,
select *
from table
where column <> ''
Run Code Online (Sandbox Code Playgroud)
将给出完全相同的结果
select *
from table
where isnull(column, '') <> ''
Run Code Online (Sandbox Code Playgroud)
因为条件为UNKNOWN而不是的记录FALSE仍会被过滤掉。我通常会选择第一个选项。
DATALENGTH计算尾随空格,而与 的比较''则不计算尾随空格。是否要 ' '与 进行比较取决于您''。如果你这样做,你需要DATALENGTH. 如果不这样做,只需与 进行比较即可''。
请注意,对于TEXT/NTEXT类型,不支持比较,但DATALENGTH支持。