sql server - 如何在列中找到带空格的行

MoX*_*lod 6 c# t-sql sql-server whitespace

我想做点什么

select * from X where string.IsNullOrWhiteSpace(a)
Run Code Online (Sandbox Code Playgroud)

列a是 NOT NULL

那么string.IsNullOrWhiteSpace在T-SQL 中C#的等价物是什么来获得列a只有空格的所有行(多个空格或制表符的组合)?

另外,我宁愿避免使用函数.

shr*_*t18 10

你可以试试这个:

select * 
from yourtable
where ltrim(rtrim(yourcolumn)) = ''
Run Code Online (Sandbox Code Playgroud)

这个想法是,如果修剪值留下一个空字符串,那么你首先拥有的只是空格.

你也可以这样做:

select *
from yourtable
where yourcolumn like ' '
Run Code Online (Sandbox Code Playgroud)

请注意,我已经在SQL Server 2008 R2上测试了第二个查询,并且在@ gunr2171的评论中说明它在2014年不起作用

最后,如果您有制表符,回车符或换行符,则上述操作无效.你可以做的是首先用空字符串替换这些值,然后使用第一个查询,如下所示:

select * 
from yourtable
where ltrim(rtrim(replace(replace(replace(yourcolumn,char(9),''),char(10),''),char(13),''))) = ''
Run Code Online (Sandbox Code Playgroud)

char(9),char(10)char(13)分别用于选项卡,线和回车.

  • "列a不是NULL" - OP表示它不会,因此不处理空值. (2认同)

小智 8

我只是在这种特殊情况下遇到了问题,我需要找到并清理每个带有空格的字段,但是我在我的数据库字段中发现了 4 种可能的空格(参考ASCII 代码表):

  • 水平制表符(char(9))
  • 新行(char(10))
  • 垂直制表符(char(9))
  • 空格(字符(32))

也许这个查询可以帮助你。

SELECT @COLUMN
FROM @TABLE
WHERE @COLUMN like '%'+CHAR(9)+'%' or @COLUMN like '%'+CHAR(10)+'%'
or @COLUMN like '%'+CHAR(11)+'%' or @COLUMN like '%'+CHAR(32)+'%'
Run Code Online (Sandbox Code Playgroud)