我偶然发现了一种我以前从未见过的情况。我希望有人可以解释以下内容。
我已经运行了以下查询,希望只得到值恰好等于 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/