跳到主要内容
JackSparrow414
返回

记oracle数据库查询小问题(二)

本文导航

展开本文导航

正文

1.问题描述,很多时候我们进行查询时要使用like关键字,MySQL和Oracle中都支持like进行模糊查询,像这样,

t.name like ‘%张三%‘,但是今天忽然发现了一个oracle中和like功能一样的关键字instr,这个关键字可以起到和like一样的作用,但是效率却要比like高很多。下面介绍一下这个神奇的instr关键字。

instr(string1,string2,[开始查找的位置,查找第几次])

instr关键字包含4个参数,第一个是源字符串,第二个是要在源字符串中进行匹配的字符串,后面两个参数已经做过介绍,一般用前面两个参数。

instr返回值是匹配到的字符串位于源字符串中的位置,如:

select instr(‘abc’,‘a’) from t    返回1,可以看出是从1开始计数的

select instr(‘abca’,‘a’,2) from t  返回4,从第二个位置开始查找a

select instr(‘abc’,‘a’,2,2) from t 返回0,查不到会返回0

如果要实现和like一样的过滤功能,则可以在where条件后面加,如:

select * from t where instr(t.name,‘张三’) >0 这句的效果就是 t.name like ‘%张三%’,

如果要是not like,直接把条件改为 =0即可。

注意:实现和like一样的模糊查询时放在where条件后面的。

至于instr为什么会比like查询效率高,目前还没搞清楚。

2.问题描述:在行级触发器找中利用序列表进行自增,但是发现一个没有用过的oracle函数,lpad。

lpad是从左侧开始进行填充,lapd(准备被填充的字符串,填充的长度[length],用什么进行填充);举例说明:

lpad(projectcode.NEXTVAL,8,0),一共要填充八位,用0填充。

于此函数对应的rpad,是从右边开始填充。


分享本文:

上一篇
关于数据库查询速度的优化思考
下一篇
关于java中关键字static的说明

评论

欢迎提问、纠错和分享经验。发表评论需要登录 GitHub;中英文版本共享评论。

评论仅在正式网站开放。