电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

解讀Oracle中代替like進(jìn)行模糊查詢的方法instr(更高效)

瀏覽:23日期:2023-03-12 15:25:40
目錄
  • 一、簡(jiǎn)介
  • 二、使用說明
    • 對(duì)應(yīng)參數(shù)描述
    • 我們以一些示例講解使用方法
  • 三、instr()與like比較
    • instr函數(shù)也有三種情況
    • 下面通過一個(gè)示例說明like 與 instr()的使用比較
  • 四、效率對(duì)比
    • 五、總結(jié)

      一、簡(jiǎn)介

      相信大家都使用過like進(jìn)行模糊匹配查詢,在oracle中,instr()方法可以用來(lái)代替like進(jìn)行模糊查詢,大數(shù)據(jù)量的時(shí)候效率更高。

      本文將對(duì)instr()的基本使用方法進(jìn)行詳解以及通過示例講解與like的效率對(duì)比。

      二、使用說明

      instr(sourceString,destString,start,appearPosition) ? ??

      對(duì)應(yīng)參數(shù)描述

      instr('源字符串' , '目標(biāo)字符串' ,'開始位置','第幾次出現(xiàn)'),返回目標(biāo)字符串在源字符串中的位置。

      后面兩個(gè)參數(shù)可要可不要。

      我們以一些示例講解使用方法

      【a】從開頭開始查找第一個(gè)‘h’出現(xiàn)的位置

      --從開頭開始查找第一個(gè)‘h"出現(xiàn)的位置select instr("zhangsan", "h") as idx from dual; --2

      查詢結(jié)果:

      【b】從開頭開始查找‘an’在字符串中的位置

      --從開頭開始查找‘a(chǎn)n"在字符串中的位置select instr("zhangsan","an") idx from dual; --3

      查詢結(jié)果:

      【c】從第一個(gè)位置開始查找,返回第二次出現(xiàn)‘a’的位置

      --從第一個(gè)位置開始查找,返回第二次出現(xiàn)‘a(chǎn)"的位置select instr("zhangsan","a",1,"2") idx from dual; --7

      查詢結(jié)果:

      【d】從倒數(shù)第一個(gè)位置開始,查找第一次出現(xiàn)‘a’的位置

      --從倒數(shù)第一個(gè)位置開始,查找第一次出現(xiàn)‘a(chǎn)"的位置select instr("zhangsan","a",-1,1) idx from dual;  --7

      查詢結(jié)果:

      【e】從倒數(shù)第一個(gè)位置開始,返回第二次出現(xiàn)‘a’的位置

      --從倒數(shù)第一個(gè)位置開始,返回第二次出現(xiàn)‘a(chǎn)"的位置select instr("zhangsan","a",-1,2) idx from dual;   --3

      查詢結(jié)果:

      三、instr()與like比較

      instr函數(shù)也有三種情況

      • a. instr(字段,'關(guān)鍵字') > 0 相當(dāng)于 字段like '%關(guān)鍵字%': 表示在字符串中包含‘關(guān)鍵字’
      • b. instr(字段,'關(guān)鍵字') = 1 相當(dāng)于 字段like '關(guān)鍵字%' 表示以‘關(guān)鍵字’開頭的字符串
      • c. instr(字段,'關(guān)鍵字') = 0 相當(dāng)于 字段not like '%關(guān)鍵字%' 表示在字符串中不包含‘關(guān)鍵字’

      下面通過一個(gè)示例說明like 與 instr()的使用比較

      【a】使用like進(jìn)行模糊查詢

      with temp1 as (select "zhangsan" as name from dual),temp2 as (select "zhangsi" as name from dual),temp3 as (select "xiaoming" as name from dual),temp4 as (select "xiaohong" as name from dual),temp5 as (select "zhaoliu" as name from dual) select * from (select * from temp1 union allselect * from temp2union allselect * from temp3union allselect * from temp4union all select * from temp5) res where res.name like "%zhang%"

      查詢字符串中包含‘zhang’的結(jié)果:

      【b】使用instr()進(jìn)行模糊查詢

      (1) 查詢字符串中包含‘zhang’的結(jié)果:

      with temp1 as (select "zhangsan" as name from dual),temp2 as (select "zhangsi" as name from dual),temp3 as (select "xiaoming" as name from dual),temp4 as (select "xiaohong" as name from dual),temp5 as (select "zhaoliu" as name from dual) select * from (select * from temp1 union allselect * from temp2union allselect * from temp3union allselect * from temp4union all  select * from temp5) res where instr(res.name,"zhang") > 0;

      (2) 查詢字符串中不包含‘zhang’的結(jié)果:

      with temp1 as (select "zhangsan" as name from dual),temp2 as (select "zhangsi" as name from dual),temp3 as (select "xiaoming" as name from dual),temp4 as (select "xiaohong" as name from dual),temp5 as (select "zhaoliu" as name from dual) select * from (select * from temp1 union allselect * from temp2union allselect * from temp3union allselect * from temp4union all select * from temp5) res where instr(res.name,"zhang") = 0;

      (3) 查詢以‘zhang’開頭的字符串:

      with temp1 as (select "zhangsan" as name from dual),temp2 as (select "zhangsi" as name from dual),temp3 as (select "sizhangsan" as name from dual),temp4 as (select "xiaohong" as name from dual),temp5 as (select "zhaoliu" as name from dual) select * from (select * from temp1 union allselect * from temp2union allselect * from temp3union allselect * from temp4union all  select * from temp5) res where instr(res.name,"zhang") = 1;

      (4)instr與like特殊用法

      select id, name from users where instr("a, b", id) > 0;--等價(jià)于select id, name  from users where id = a    or id = b;--等價(jià)于select id, name from users where id in (a, b);

      四、效率對(duì)比

      【a】使用plsql創(chuàng)建一張十萬(wàn)條數(shù)據(jù)測(cè)試數(shù)據(jù)表,同時(shí)為需要進(jìn)行模糊查詢的列增加索引

      --創(chuàng)建10萬(wàn)條測(cè)試數(shù)據(jù)create table test_instr_like as select rownum as id,"zhangsan" as name from dualconnect by level <= 100000; --name列建立索引create index idx_tb_name on test_instr_like(name);

      【b】使用like進(jìn)行模糊查詢

      select * from TEST_INSTR_LIKE t where t.name like "%zhang%"

      總耗時(shí): 60秒

      【c】使用instr進(jìn)行模糊查詢

      select * from TEST_INSTR_LIKE t where instr(t.name, "zhang") > 0;

      總耗時(shí):50秒

      由圖可見,instr查詢的速度確實(shí)比like快一些,但是,看執(zhí)行計(jì)劃的話,instr卻比like耗時(shí)一點(diǎn)。如下圖:

      五、總結(jié)

      以上是對(duì)instr基本使用方法的講解以及通過示例對(duì)比了like與instr的效率,在進(jìn)行模糊查詢的時(shí)候,能用instr的話就盡量用instr,畢竟數(shù)據(jù)量大的時(shí)候還是有一點(diǎn)優(yōu)勢(shì)的,本文是筆者對(duì)like以及instr的一些總結(jié)和見解,僅供大家學(xué)習(xí)參考,也希望大家多多支持。

      標(biāo)簽: Oracle
      相關(guān)文章:
      主站蜘蛛池模板: 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 石家庄小程序开发_小程序开发公司_APP开发_网站制作-石家庄乘航网络科技有限公司 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 耐酸泵,耐酸泵厂家-淄博华舜耐腐蚀真空泵 | 螺旋叶片_螺旋叶片成型机_绞龙叶片_莱州源泽机械制造有限公司 | SMC-SMC电磁阀-日本SMC气缸-SMC气动元件展示网 | 纯化水设备-EDI-制药-实验室-二级反渗透-高纯水|超纯水设备 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 玻璃钢格栅盖板|玻璃钢盖板|玻璃钢格栅板|树篦子-长沙川皖玻璃钢制品有限公司 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 澳洁干洗店加盟-洗衣店干洗连锁「澳洁干洗免费一对一贴心服务」 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 郑州爱婴幼师学校_专业幼师培训_托育师培训_幼儿教育培训学校 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 江苏皓越真空设备有限公司| 密封无忧网 _ 专业的密封产品行业信息网 | 学考网学历中心| 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 |