读书人

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

发布时间: 2012-01-30 21:15:58 作者: rapoo

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)

读书人网 >SQL Server

热点推荐