Sql server Sql命令-与%operator类似

Sql server Sql命令-与%operator类似,sql-server,Sql Server,在表中,我有一行,其中列“name”是“name123” 第一个sql命令返回此行,但第二个命令什么也不做,为什么 select * from Osoby where imie like '%123%' select * from Osoby where imie like '%123' 该字段可能有尾随空格。如果imie字段是char字段,则它将用空格填充您在其中输入的内容,以达到字段长度。如果将其更改为varchar字段,则可以去掉尾随空格 如果将字段更改为varchar,则运行,UPD

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

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

select * from Osoby where imie like '%123'

该字段可能有尾随空格。

如果
imie
字段是char字段,则它将用空格填充您在其中输入的内容,以达到字段长度。如果将其更改为varchar字段,则可以去掉尾随空格

如果将字段更改为varchar,则运行,
UPDATE-Osoby SET-imie=RTRIM(imie)
以删除多余的空格


本质上,您发布的查询应该可以工作,听起来您的数据好像有问题。

检查您的数据类型并查看:

利用LIKE进行模式匹配

LIKE支持ASCII模式匹配和Unicode模式匹配。当所有参数(匹配\表达式、模式和转义\字符,如果存在)都是ASCII字符数据类型时,将执行ASCII模式匹配。如果任何一个参数是Unicode数据类型,则所有参数都将转换为Unicode,并执行Unicode模式匹配。当您将Unicode数据(nchar或nvarchar数据类型)与LIKE一起使用时,尾随空格很重要;但是,对于非Unicode数据,尾随空格并不重要。类Unicode与ISO标准兼容。类ASCII与早期版本的SQL Server兼容


按照其他人的建议,试试这个--


并验证您正在获取行

以防止出现空格问题。请尝试以下操作:

select * from Osoby where ltrim(rtrim(imie)) like '%123'

字段内容后面是否有尾随空格?imie-char(x)、nchar(x)、varchar(x)或nvarchar(x)的数据类型是什么
select * from Osoby where ltrim(rtrim(imie)) like '%123'