1

这个匹配column_name like 'CharEndsHere%'

这个不column_name like 'CharEndsHere'

我知道 like 运算符甚至会考虑尾随空格,所以我只是复制了确切的列值(带有尾随空格)并粘贴了它。

类似的东西column_name like 'CharEndsHere '却不匹配——为什么?.

我没有使用'='运算符,因为列类型是ntext

我在这里缺少什么或者我不应该like以这种方式使用运算符吗?

编辑:column_name like 'CharEndsHere__'(__表示空格)'CharEndsHere '是该单元格中的确切值,like以这种方式使用是否有效?

编辑 :

这是我试过的代码,

SELECT * 
FROM [DBName].[dbo].[TableName] 
WHERE [DBName].[dbo].[TableName].Address1 LIKE rtrim('4379 Susquehanna Trail S  ') 

我也尝试过不使用rtrim,但结果相同

编辑:根据 Blindy 的回答,

If a comparison in a query is to return all rows with the string LIKE 'abc' (abc
without a space), all rows that start with abc and have zero or more trailing 
blanks are returned.

但就我而言,我已经查询过,Like 'abc'并且有一个包含'abc '(with trailing spaces)未返回的单元格。这是我的实际问题

4

1 回答 1

7

这是一个阅读文档的案例,这里非常明确地说明:http: //msdn.microsoft.com/en-us/library/ms179859.aspx

当您使用 LIKE 执行字符串比较时,模式字符串中的所有字符都是有意义的。这包括前导或尾随空格。如果查询中的比较是返回带有字符串 LIKE 'abc'(abc 后跟一个空格)的所有行,则不返回该列的值为 abc(没有空格的 abc)的行。但是,模式匹配的表达式中的尾随空格将被忽略。如果查询中的比较是返回所有带有字符串 LIKE 'abc'(abc 没有空格)的行,则返回所有以 abc 开头并且有零个或多个尾随空格的行。

编辑:根据您的评论,您似乎正在寻找一种like在忽略尾随空格的情况下使用的方法。使用这样的东西:field like rtrim('abc '). 它仍将使用索引,因为rtrim()它是一个标量操作数,并且在查找阶段之前对其进行了评估。

于 2014-08-06T13:51:44.303 回答