我们知道很多语言都提供了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()都是弟弟。

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

oracle的instr()函数的更多相关文章

  1. 使用Oracle的instr函数与索引配合提高模糊查询的效率

    使用Oracle的instr函数与索引配合提高模糊查询的效率 一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:1.select * from tb wher ...

  2. Oracle中INSTR函数与SQL Server中CHARINDEX函数

    Oracle中INSTR函数与SQL Server中CHARINDEX函数 1.ORACLE中的INSTR INSTR函数格式:INSTR(源字符串, 目标字符串, 起始位置, 匹配序号) 说明:返回 ...

  3. Oracle中instr 函数的详解

    INSTR    (源字符串, 目标字符串, 起始位置, 匹配序号)    在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始    到字 ...

  4. oracle中INSTR函数的用法

    今天有个同学问我这个INSTR函数,我也不太清楚就上网查了查做一个小小的记录吧 INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2  ...

  5. oracle 中INSTR 函数和SUBSTR函数的使用

    INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始 到字符的结尾就结束. ...

  6. 【Oracle】instr()函数详解

    1)instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( strin ...

  7. Oracle的instr函数

    instr函数 instr(目标字符串,被匹配的字符串,搜索的开始位置默认是1,第几次被搜索到) 例子1: SQL> select ename,instr(ename,'L',1,1) from ...

  8. Oracle的instr()函数和substr()函数

    INSTR()函数 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置. 语法: instr(sourceString ...

  9. PostgreSQL模仿Oracle的instr函数

    -- -- instr functions that mimic Oracle's counterpart -- Syntax: instr(string1, string2, [n], [m]) w ...

随机推荐

  1. javaScript之基础介绍

    前言一:javascript历史背景介绍 布兰登 • 艾奇(Brendan Eich,1961年-),1995年在网景公司,发明的JavaScript. 一开始JavaScript叫做LiveScri ...

  2. 【CF704D】Captain America(上下界网络流)

    [CF704D]Captain America(上下界网络流) 题面 CF 洛谷 题解 如果没有限制,似乎就不用做了...因为我们只需要贪心的选择代价较小的颜色就行了. 那么我们不妨假设染红色的代价较 ...

  3. 2018-8-10-win10-uwp-依赖属性

    原文:2018-8-10-win10-uwp-依赖属性 title author date CreateTime categories win10 uwp 依赖属性 lindexi 2018-08-1 ...

  4. Razor_06 列表的查询

    Razor_06 列表的查询 列表的查询 同步/AJAX 查询 分局部视图[强类型] system.text.Json  Ajax 返回 Json 数据 , System.Text.Json .循环引 ...

  5. C#中对文件进行选择对话框打开和保存对话框进行复制

    场景 通过文件选择对话框选择文件 复制文件到指定路径 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号霸道的程序猿获取编程相关电子书.教 ...

  6. 易优CMS:【小白学标签】之empty的基础用法

    [基础用法] 名称:empty 功能:判断某个变量是否为空,可以嵌套到任何标签里面使用,比如:channel.type等 语法: {eyou:empty name='$eyou.field.seo_t ...

  7. 远程连接docker

    vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix: ...

  8. PeriscopeHeartAnimation

    // // ViewController.m // PeriscopeHeartAnimation // // Created by ldj on 4/28/15. // Copyright (c) ...

  9. 剑指offer 17:合并两个有序链表

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.   解题思路 链表基础操作考察,难点在于对于输入数据的把握,一定要考虑输入数据的全面性 1.出现 ...

  10. Python的4个内置数据结构

    Python提供了4个内置数据结构(内置指可以直接使用,无需先导入),可以保存任何对象集合,分别是列表.元组.字典和集合. 一.列表有序的可变对象集合. 1.列表的创建例子 list1 = []lis ...