like函数 介绍与优化
oracle like函数 介绍与优化
用法:like 'A%' -- 字符串以A 开头
like '%A' -- 字符串以A 结尾
like '%A%'-- 字符串以 包含A ,(不管出现在字符串的什么位置)
表 table1 包含字段 name
有时候我们用到的如下 语句,
select * from table1 where name like '%AB%' or name like '%20%' or name like '%30%'or name like '%12414%';
但是查询起来特别慢,这个时候我们怎么去优化它
1.确定 我们需求字符串的准确位置,譬如说我们 只要AB 开头,CD 结尾的字符,我们可以写成 name like 'AB%' or name like '%CD'
2.数字大小比较,像这种有数字的,我们可以 以写成 to_number(name)>=20 and to_number(name)<=30
3.instr instr(name,'AB') >0 ,这个通过角标表的位置可以提高效率 --- instr() 函数返回字符串 角标所在的位置,没有返回0
4.正则表示式: 如果仅仅取包含数字和字母 可以这样写
where regexp_like(name,'[0-9]+|[A-Z]+')
或者:
where regexp_like(name,'[[:alpha:]]+|[[:digit:]]+')
--- regexp_like(): 字符串截取函数用于正则表达式 oracle 10g 函数, + :表示一个或者多个,| 表示或者的意思
--[[:alpha:]] 任何字母。
--[[:digit:]] 任何数字。
5. 建立索引,给字段 name 建立个索引提高查询的效率
http://www.itemperor.com/a/SQL/68.html
原文链接:http://www.jxszl.com/biancheng/shujuku/445460.html