我偶然发现了一个从未见过的情况。我希望有人可以解释以下内容。
我运行了以下查询,希望仅获取其值完全等于1101
的列的结果
select '--' + MyColumn + '--' SeeSpaces, Len(MyColumn) as LengthOfColumn
from MyTable
where MyColumn = '1101'
但是,我还看到
1101
后面跟着(我认为是)空格的值。所以
SeeSpaces
返回--1101 --
并且
LengthOfColumn
返回4
MyColumn
是VARCHAR(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/