Oracle模糊查询优化

这是第一篇关于技术的。

干这行一年了 ,以前就是懒 不爱学习,工作中用不到的。。基本都不怎么会

现在开始 一点一点记录自己的成长吧



随意的一张表里做一次 select * from  like 的查询,举个例子吧。

user表里 username字段有 三行数据

uesename

'ABCDEF'

'_BCDEF'

'CBCDEF'

要求模糊查询出 _BC的username值

select  *  from uesr where username like  ‘_BC’ 查询出来的结果并不理想

因为在条件里的_BC被oracle当做了通配符 

(LIKE 字句中  有两个通配符,"%"代替一个或者多个字符,“_"代替一个或者多个字符)

所以查询出的数据 是会把上述三条数据都会查询出


那这里 “_” 下划线被当做了通配符,

可以使用“\”转义字符


所以这样写

select  *  from uesr where username like  ‘\_BC’ escape '\';

就可以查询出想要的数据了

ESCAPE 把“\”标识为转义字符,而"\"把"_"转义为字符,而非其原意(通配符)。

那如果  上列的第二条数据时这样的呢?

"_\BCDEFG"

如果还是按照上述的查询  

会出现转衣服之后字符确实或非法的错(这个自己实现就好)

做开发时间长了之后就会知道  双写转义字符就可以实现了

select  *  from uesr where username like  ‘_\\BC’ escape '\';

字符串出现"%"  按上面的处理方法就可以实现!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值