我偶然发现了一个从未见过的情况。我希望有人可以解释以下内容。

我运行了以下查询,希望仅获取其值完全等于1101的列的结果

select '--' + MyColumn + '--' SeeSpaces, Len(MyColumn) as LengthOfColumn
from MyTable
where MyColumn = '1101'


但是,我还看到1101后面跟着(我认为是)空格的值。

所以SeeSpaces返回

--1101    --


并且LengthOfColumn返回4

MyColumnVARCHAR(8), NOT NULL列。它的值(包括空格)通过单独的工作流程插入。

为什么此选择不只返回精确结果?

提前致谢

最佳答案

原因与SQL Server比较字符串和尾随空格的方式有关,它遵循ANSI标准,因此字符串'1101'和'1101'是等效的。

有关更多详细信息,请参见以下内容:

INF: How SQL Server Compares Strings with Trailing Spaces

关于sql-server - VARCHAR列上的WHERE子句似乎像LIKE一样运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15247835/

10-09 00:23