我需要创建一个查询来收集列 A
不为空且不为空的所有行。
当我使用它时:
AND A.EXP_GRAD_TERM is not null AND A.EXP_GRAD_TERM <> ' '
我得到了 1169 条记录,这些记录都有该字段的一些值。
但是当我使用这个时:
AND LTRIM(RTRIM(A.EXP_GRAD_TERM)) is not null
我得到了 1932 条记录。他们有带值的行和带空白的行。我什至转换了列,该列只有空格或值,没有其他奇怪的不可见字符。
我不知道为什么。我认为他们应该以同样的方式工作。
有什么想法吗?
最佳答案
这个表达式:
LTRIM(RTRIM(A.EXP_GRAD_TERM)) is not null
完全等同于:
A.EXP_GRAD_TERM is not null
空字符串不同于NULL
, 因此删除空格——即使是从只有空格的字符串中删除空格——对 NULL
没有影响比较。
如果您感到困惑,也许您有使用 Oracle 的经验,其中空字符串和 NULL
是一样的东西。这是 Oracle 的一个特殊属性。
关于sql - sql server 中的 LTRIM(RTRIM(COLUMN)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54832061/