zoukankan      html  css  js  c++  java
  • oracle的instr()函数

    我们知道很多语言都提供了indexOf()和lastIndexOf()函数,以便能查找某个字符在某个字符串中的出现的位置和最后一次出现的位置。

    但是Oracle没有提供这两个函数,事实上,它提供了一个INSTR()函数,这个函数其实功能要强大得多。

    INSTR()函数的语法:

    -- instr(源字符串, 目标字符串 [, 起始位置 [, 匹配序号]])
    instr(str1, str2 [, start_position [, nth_appearance]]) 

    没有错,它可以用来查字符串的,不是单单查单个字符。

    SELECT INSTR('HELLOWORLD', 'L') FROM DUAL; -- 3  默认第一次出现L的位置
    SELECT INSTR('HELLOWORLD', 'LO') FROM DUAL; -- 4 在LO中的L开始出现的位置
    SELECT INSTR('HELLOWORLD', 'WO') FROM DUAL; -- 6 在WO中的W开始出现的位置
    
    SELECT INSTR('HELLOWORLD', 'L', 2, 2) FROM DUAL; -- 4 在HELLOWORLD的第2(E)号位置开始,查找第二次出现的L的位置
    SELECT INSTR('HELLOWORLD', 'L', 3, 2) FROM DUAL; -- 4 在HELLOWORLD的第3(L)号位置开始,查找第二次出现的L的位置
    SELECT INSTR('HELLOWORLD', 'L', 4, 2) FROM DUAL; -- 9 在HELLOWORLD的第4(L)号位置开始,查找第二次出现的L的位置
    SELECT INSTR('HELLOWORLD', 'L', -1, 1) FROM DUAL; -- 9 在HELLOWORLD的倒数第1(D)号位置开始,往回查找第一次出现的L的位置
    SELECT INSTR('HELLOWORLD', 'L', -2, 2) FROM DUAL; -- 4 在HELLOWORLD的倒数第1(D)号位置开始,往回查找第二次出现的L的位置
    SELECT INSTR('HELLOWORLD', 'L', 2, 3) FROM DUAL; -- 9 在HELLOWORLD的第2(E)号位置开始,查找第三次出现的L的位置
    SELECT INSTR('HELLOWORLD', 'L', -2, 3) FROM DUAL; -- 3 在HELLOWORLD的倒数第2(L)号位置开始,往回查找第三次出现的L的位置

    INSTR()函数有时候也可以用来替代模糊查询。

    SELECT * FROM TABLE WHERE NAME LIKE '%HELLOWORLD%';
    SELECT * FROM TABLE WHERE INSTR(NAME, 'HELLOWORLD') > 0;

    这两个语句的实现效果是一样的。

    多用用,你就能感受到这个函数的强大,那些什么indexOf()或lastIndexOf()都是弟弟。

    "为谁如花美眷,似水流年。"

  • 相关阅读:
    uboot串口与标准输入输出代码详解
    uboot打开Debug
    git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
    git 代码管理工具,很不错,值得推荐
    Ubuntu 压缩解压命令
    OMAPL138调试笔记
    网络
    关于运放
    win7 linux 双系统删除linux & 双系统安装
    dedecms 蜘蛛抓取设置 robots.txt
  • 原文地址:https://www.cnblogs.com/yanggb/p/10820221.html
Copyright © 2011-2022 走看看