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()都是弟弟。

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

  • 相关阅读:
    数学基础之梯度
    背包九问心得
    如何判断机器是大端机还是小端机
    Matlab学习 2021年2月10日
    数字信号处理(超浓缩版)第一天
    matlab里的数据类型
    如何学习Matlab的帮助文档?& 如何去编写帮助文档
    fprintf 和 dlmwrite 在写数据时的区别
    lateinit 延迟初始化
    data class 在 Kotlin中的定义
  • 原文地址:https://www.cnblogs.com/yanggb/p/10820221.html
Copyright © 2011-2022 走看看