这个匹配column_name like 'CharEndsHere%'
和
这个不是column_name like 'CharEndsHere'
我知道像操作员一样会考虑尾随空格,所以我只是复制了精确列值(带尾随空格)并粘贴它。
类似于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)
的单元格未被返回。这是我的实际问题
答案 0 :(得分: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()
是标量操作数,并且在查找阶段之前对其进行了评估。