Sql命令 - 与%运算符一样

时间:2011-06-06 20:15:53

标签: sql-server

在表格中我有一行,其中'name'列是'name123' 第一个sql命令返回此行,但第二个命令什么都不做,为什么?

select * from Osoby where imie like '%123%'

select * from Osoby where imie like '%123'

5 个答案:

答案 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'