日期:2014-05-17  浏览次数:20498 次

sql语句中用等号在匹配的字符串后面存在多余的空格也能匹配出来
发现一个很恶心的是
举个栗子,我用一下这条sql查询
select * from test where code='test'
和下面这条sql查询
select * from test where code='test    '
查询结果是相同的
但是,这个却我不想要的,而且这个会让带空格的各种脏数据影响查询结果,有什么方法屏蔽掉吗?具测试like不会有这个现象,但是不想用like呀,等号不是应该就是完全匹配吗

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

如果code的数据类型是varchar,那么你的2个查询效果是一样的,sql server会自动去掉尾部的空格:


create table test(code varchar(10))

insert into test
select 'test   ' union all
select 'test'
go

select * from test where code='test'
/*
code
test   
test
*/

select * from test where code='test   '
/*
code
test   
test
*/


都有哪些类型会出现这种状况呀


你的code是什么类型的?

就是varchar呀


照理,如果是varchar类型的,再insert into 的时候,就会把'test   '字符串的空格自动去掉的

。。。难道我只能去用like了?真心是木有去掉的呀,而且用管理工具去编辑,里面的空格都是存在的


能给贴个图看看不