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)