在表格中我有一行,其中'name'列是'name123' 第一个sql命令返回此行,但第二个命令什么都不做,为什么?
select * from Osoby where imie like '%123%'
select * from Osoby where imie like '%123'
答案 0 :(得分:2)
与其他人的建议一致,试试这个 -
select * from Osoby where RTRIM(LTRIM((imie)) like '%123'
并确认您收到了行
答案 1 :(得分:1)
也许该字段有尾随空格。
答案 2 :(得分:1)
如果imie
字段是一个char字段,它将填充您放入其中的任何内容以填充字段的长度。如果将其更改为varchar字段,则可以删除尾随空格。
如果您将字段更改为varchar,请运行UPDATE Osoby SET imie = RTRIM(imie)
以修剪多余的空格。
从本质上讲,您发布的查询应该有效,这听起来像您的数据有问题。
答案 3 :(得分:1)
检查您的数据类型并查看: http://msdn.microsoft.com/en-us/library/ms179859.aspx
使用LIKE进行模式匹配
LIKE支持ASCII模式匹配和Unicode模式匹配。当所有参数(match_expression,pattern和escape_character,如果存在)是ASCII字符数据类型时,将执行ASCII模式匹配。如果任何一个参数是Unicode数据类型,则所有参数都将转换为Unicode并执行Unicode模式匹配。在LIKE中使用Unicode数据(nchar或nvarchar数据类型)时,尾随空白很重要;但是,对于非Unicode数据,尾随空白并不重要。 Unicode LIKE与ISO标准兼容。 ASCII LIKE与早期版本的SQL Server兼容。
答案 4 :(得分:1)
防止出现空间问题试试这个:
select * from Osoby where ltrim(rtrim(imie)) like '%123'