【发布时间】:2014-09-29 11:44:17
【问题描述】:
这个匹配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) 的单元格没有返回。这是我的实际问题
【问题讨论】:
-
没有任何通配符(% 或 _)的 LIKE 将与 = 运算符完全相同!
-
@Mithrandir 是的,我在问题中也提到过。但是我在这里寻找的就像 'char__' 在不使用 % 的情况下匹配
-
那么你应该在你的问题中说明这一点!您想以无法使用的方式使用 like 运算符。一直想要它,它不会像工作一样改变方式!
-
LIKE很好 - 但您应该停止使用NTEXT数据类型!请改用NVARCHAR(MAX)。NTEXT很糟糕,许多字符串函数根本不起作用。对所有超长的 Unicode 字符串使用NVARCHAR(MAX),你会没事的! -
ntext、text和image数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)、varchar(max)和varbinary(max)。 See details here
标签: sql sql-server sql-server-2008 sql-like ntext