T-SQL喜欢不像预期的那样工作 - 使用=返回LESS命中数而不是相同的查询

Chr*_*uud 2 sql t-sql sql-server sql-like

我在表中有两行,其中包含"名称"列中的SAME信息(nvarchar(50),而不是null).

SELECT * FROM TableName WHERE ColumnName = 'ColumnValue' 
Run Code Online (Sandbox Code Playgroud)

返回两行

SELECT * FROM TableName WHERE ColumnName LIKE 'ColumnValue'
Run Code Online (Sandbox Code Playgroud)

只返回一行

有没有人知道可能导致这种行为的原因是什么?

Dav*_*idG 9

这可能是由于尾随空格.执行=操作会排除尾随空格但LIKE不会.

例如,这将返回一个匹配:

SELECT 'match' WHERE 'fred' = 'fred   '
Run Code Online (Sandbox Code Playgroud)

但这不会:

SELECT 'match' WHERE 'fred' LIKE 'fred   '
Run Code Online (Sandbox Code Playgroud)