繁体   English   中英

LTRIM(RTRIM(COLUMN))在sql server中

[英]LTRIM(RTRIM(COLUMN)) in sql server

我需要创建一个查询来收集列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()函数:

截断所有尾随空格后返回一个字符串。

它们与IsNull或空字符串条件不同(CASE WHEN IS NULL OR <>'')

参考

这个表达式:

 LTRIM(RTRIM(A.EXP_GRAD_TERM)) is not null

完全等同于:

A.EXP_GRAD_TERM is not null

空字符串与NULL不同,因此删除空格 - 即使是只有空格的字符串 - 也不会影响NULL比较。

如果您感到困惑,也许您有使用Oracle的经验,其中空字符串和NULL是相同的。 这是Oracle的一个特殊属性。

COALESCE()LTRIM()RTRIM()

AND RTRIM(LTRIM(COALESCE(A.EXP_GRAD_TERM, ''))) <> ''

COALESCE(A.EXP_GRAD_TERM, '')将为每个null值返回''

看看你是否想要获得非空且非空的值,你可以使用isnull(exp,replace_value)

AND RTRIM(LTRIM(ISNULL(A.EXP_GRAD_TERM, ''))) <> ''

isnull isnull替换要替换它的空值。 你也可以使用COALESCE “返回你的参数中的第一个非null表达式”

COALESCE优于ISNULL一个明显优势是它支持两个以上的输入,而ISNULL只支持两个。 COALESCE的另一个优点是它是一个标准函数(即由ISO / ANSI SQL标准定义),而ISNULL是特定于T-SQL的。 这两个函数之间的这些差异非常简单。

如果您想了解有关ISNULL和COALESCE之间差异的更多信息,您可以在此链接上看到它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM