SQL Server的WHERE子句中的空格

Kor*_*uba 11 sql sql-server

我想找出某个列只包含一个空格而不包含任何其他内容的记录.所以我编写了以下第一个查询:

select COUNT(*)
from mytable
where col = ' ' -- One space

select COUNT(*)
from mytable
where col = '  ' -- Two spaces

select COUNT(*)
from mytable
where col = '  ' -- Three spaces
Run Code Online (Sandbox Code Playgroud)

但是,所有三个查询都返回完全相同的记录.Microsoft SQL Server无法区分空间量吗?如何准确查询一个,两个或更多空格?

sti*_*bit 7

是的,它在比较中忽略了尾随空格.

您可以尝试附加分隔符.

SELECT count(*)
FROM mytable
WHERE col + 'X' = ' X';
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这排除了索引的使用. (4认同)
  • @GordonLinoff可以通过`WHERE col =''和col +'X'='X'来解决?第一部分是索引的,然后它应用细化. (2认同)
  • @barmar...我会选择`col =''和len(col)= 1`. (2认同)