日期:2014-05-19  浏览次数:20706 次

sql语句中 like特殊字符的问题

name
_23_
_3_


select   name   from   table   where   name   like   '%_3_% '

这条语句会把上面2条记录全选出来。不信你们试试,以前没有注意到。
第一条不是我想要得,是不是   _   要特殊处理啊?




------解决方案--------------------
还真的没有试过哦,那把-用[]括起来吧
------解决方案--------------------
select name from table where name like '%\_3\_% ' escape '\ '
------解决方案--------------------
where name like '%[_]3[_]% '
------解决方案--------------------
declare @ta table(name varchar(10))
insert @ta
select '_23_ '
union select '_3_ '

--select name from @ta where name like '%_3_% '这样没有转义是不行的
用ESCAPE:

select name from @ta where name like '%!_3!_% ' ESCAPE '! '

(所影响的行数为 2 行)

name
----------
_3_

(所影响的行数为 1 行)


------解决方案--------------------
用ESCAPE_转义普通符号就行了
------解决方案--------------------
select * from
(
select col= '_23_ '
union all select '_3_ '
)a where col like '%a_3_% '
escape 'a '

--result
col
----
_3_

(1 row(s) affected)