VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1019|回复: 7

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

[复制链接]

2

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-13 21:00:02 | 显示全部楼层 |阅读模式

name
_23_
_3_


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

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


回复

使用道具 举报

1

主题

23

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-4-11 22:30:01 | 显示全部楼层
还真的没有试过哦,那把-用[]括起来吧
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-4-12 00:45:02 | 显示全部楼层
select name from table where name like '%\_3\_%' escape '\'
回复

使用道具 举报

0

主题

23

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-4-12 03:30:02 | 显示全部楼层
where name like '%[_]3[_]%'
回复

使用道具 举报

0

主题

93

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-4-12 20:45:01 | 显示全部楼层
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 行)

回复

使用道具 举报

0

主题

93

帖子

46.00

积分

新手上路

Rank: 1

积分
46.00
发表于 2020-4-12 21:15:02 | 显示全部楼层
用ESCAPE_转义普通符号就行了
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-4-14 16:00:01 | 显示全部楼层
select * from
(
select col='_23_'
union all select '_3_'
)a where col like '%a_3_%'
escape 'a'

--result
col  
----
_3_

(1 row(s) affected)
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-16 16:45:01 | 显示全部楼层
ESCAPE 是個好東西啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表