我观察到sql能够匹配像'4280'这样的值,如果匹配'4280',但是当搜索到10442时它没有检测到'10442'
请参阅以下查询
CREATE TABLE Persons
(
PersonID int,
myval varchar(255),
);
select * from Persons
insert into Persons values(1,'aftab')
insert into Persons values(2,' 10442')
insert into Persons values(3,'4280 ')
/* It does not retrieve the row which has myal '10442' */
select * from Persons where myval='10442'
/* It does retrieve the row which has myal '4280' in spite of the trailing spaces*/
select * from Persons where myval='4280'
我原本期望尾随和前导空格都被视为相同,即检测到“10442”和“4280”,或者两者都未被检测到。
答案 0 :(得分:1)
答案 1 :(得分:1)
最好的方法是限制带有空格的数据被添加到数据库表中。我希望您使用Oracle作为您的数据库,如果您尝试检索,带有空格的数据将会很奇怪。
解决方案:
Insert into Persons values(rtrim(ltrim(myval)));
2)否则,如果你已经有这样的空白数据,我建议你在检索时添加修剪功能,以避免奇怪的输出。
我希望这可能对你有所帮助。
-Bruce