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

时间:2014-11-14 10:27:03

标签: sql sql-server tsql sql-like

我在表格中有两行,其中包含'名称'中的相同信息。 column(nvarchar(50),not null)。

SELECT * FROM TableName WHERE ColumnName = 'ColumnValue' 

返回两个

SELECT * FROM TableName WHERE ColumnName LIKE 'ColumnValue'

只返回一行

是否有人知道可能导致此行为的原因是什么?

2 个答案:

答案 0 :(得分:9)

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

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

SELECT 'match' WHERE 'fred' = 'fred   '

但是这不是:

SELECT 'match' WHERE 'fred' LIKE 'fred   '

答案 1 :(得分:1)

我在使用

时总是使用%

将您的喜欢声明更改为

SELECT * FROM TableName WHERE ColumnName LIKE '%ColumnValue%'

使用精确的列值总是更好,但有时你不记得确切的字符串太长了。