sql-server - VARCHAR 列上的 WHERE 子句似乎作为 LIKE 操作

标签 sql-server select sql-like varchar

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

我已经运行了以下查询,希望只得到值恰好等于 1101 的列的结果

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

但是,我也看到了 1101 的值后跟(我认为是)空格。

所以SeeSpaces返回
--1101    --

LengthOfColumn返回 4MyColumnVARCHAR(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/

相关文章:

sql - 如何在 MERGE 语句中更新源表?

sql - sysdate和getdate()的常用sql是什么

Mysql LIKE 子句和重音符号

SQL - 如何从查询结果中排除与另一行相同的行?

java - 从 SQL Server 存储过程获取输出参数和 ResultSet 值

php - Mysql - Where IN 子句未正确选择数据

select - 垂直对齐 IE8 选择元素内的文本

mysql - select count(*) 没有给出正确的计数

mysql - SQL WHERE 字符串 LIKE 字段

MySQL 通配符与 concat 匹配