【发布时间】:2012-04-11 19:05:40
【问题描述】:
我有一个列名,它是一个 varchar
我想过滤所有名称为空字符串的结果...
select name
from tblNames
where name <> ''
我想做的是:
select name
from tblNames
where Ltrim(RTrim(name)) <> ''
我想在 where 子句中对 name 进行修剪,但我已经阅读了一些文章,其中提到了 where 子句中函数的性能问题
我想要一个不影响性能的解决方案
【问题讨论】:
-
要明确一点 - 你有没有只是空格的条目,即不仅仅是一个空字符串?
-
它可以清空字符串以及空值和空格
-
在内容方面有以下选项: 1. null 2. 空字符串 3. 仅空格 4. 带有可选空格的数据。如果您只想避免 1 和 2,您可以执行
where name <> '' and name is not null- 在某些设置中,这也会忽略 3。但是如果您想通过删除空格来明确避免 3,那么您可能需要一个函数。where name <> ''确实会忽略某些配置上的空值,因此可能就足够了 -
那
where name <> ''不工作吗? -
@abbas:那你没查?默认情况下,由空格组成的字符串匹配 SQL Server 中的空字符串,即
' ' = ''。
标签: sql sql-server performance trim