当前位置:Gxlcms > 数据库问题 > Oracle中instr()函数用法

Oracle中instr()函数用法

时间:2021-07-01 10:21:17 帮助过:8人阅读

,包含该子串时返回对应的索引位置,不包含则返回0。

有点类似Java中 String.contains() 是否包含的意思,当然String.contains()  返回的是Boolean值,包含返回true,不包含返回false.

 

具体含义如下:

string 原字符串,例如 tandashi

substring 目标字符串,一般是原字符串的子串,例如 a

start_position 可选的,在原字符串中的开始查找的位置,正数从左至右,负数从右至左,Oracle索引是从1开始的,

      例如 3,就是从 tandashi 的第3位(字母n)从左至右开始查找目标字符串 a

      例如 -2,就是从 tandashi 的倒数第2位(字母h)从右至左开始查找目标字符串 a

nth_appearance 可选的,子串第n次出现的索引位置。

 

索引位置

  1. <span style="color: #000000;">t a n d a s h i
  2. </span><span style="color: #800000; font-weight: bold;">1</span> <span style="color: #800000; font-weight: bold;">2</span> <span style="color: #800000; font-weight: bold;">3</span> <span style="color: #800000; font-weight: bold;">4</span> <span style="color: #800000; font-weight: bold;">5</span> <span style="color: #800000; font-weight: bold;">6</span> <span style="color: #800000; font-weight: bold;">7</span> <span style="color: #800000; font-weight: bold;">8</span>

 

例子:

  1. <span style="color: #800000; font-weight: bold;">1</span> <span style="color: #0000ff;">select</span> instr(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tandashi</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">a</span><span style="color: #ff0000;">‘</span>) <span style="color: #0000ff;">from</span> dual; <span style="color: #008080;">--</span><span style="color: #008080;">返回结果:2 默认第一次出现“a”的位置</span>
  2. <span style="color: #800000; font-weight: bold;">2</span> <span style="color: #0000ff;">select</span> instr(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tandashi</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">da</span><span style="color: #ff0000;">‘</span>) <span style="color: #0000ff;">from</span> dual; <span style="color: #008080;">--</span><span style="color: #008080;">返回结果:4 即“da”第一次出现的位置<br></span>

 

  1. <span style="color: #800000; font-weight: bold;">1</span> <span style="color: #0000ff;">select</span> instr(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tandashi</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">a</span><span style="color: #ff0000;">‘</span>,<span style="color: #800000; font-weight: bold;">2</span>,<span style="color: #800000; font-weight: bold;">2</span>) <span style="color: #0000ff;">from</span> dual; <span style="color: #008080;">--</span><span style="color: #008080;">返回结果:5 <br> --也就是说:在"tandashi"的第2位(字母a)开始,查找第二次出现的“a”的位置<br><br></span>
  2. <span style="color: #800000; font-weight: bold;">2</span> <span style="color: #0000ff;">select</span> instr(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tandashi</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">a</span><span style="color: #ff0000;">‘</span>,<span style="color: #800000; font-weight: bold;">3</span>,<span style="color: #800000; font-weight: bold;">1</span>) <span style="color: #0000ff;">from</span> dual; <span style="color: #008080;">--</span><span style="color: #008080;">返回结果:5 <br> --也就是说:在"tandashi"的第3位(字母n)开始,查找第一次出现的“a”的位置<br><br></span>
  3. <span style="color: #800000; font-weight: bold;">3</span> <span style="color: #0000ff;">select</span> instr(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tandashi</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">a</span><span style="color: #ff0000;">‘</span>,<span style="color: #808080;">-</span><span style="color: #800000; font-weight: bold;">1</span>,<span style="color: #800000; font-weight: bold;">2</span>) <span style="color: #0000ff;">from</span> dual; <span style="color: #008080;">--</span><span style="color: #008080;">返回结果:2 <br> --也就是说:在"tandashi"的倒数第1位(字母i)开始,往回查找第二次出现的“a”的位置<br><br></span>
  4. <span style="color: #800000; font-weight: bold;">4</span> <span style="color: #0000ff;">select</span> instr(<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tandashi</span><span style="color: #ff0000;">‘</span>,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">a</span><span style="color: #ff0000;">‘</span>,<span style="color: #808080;">-</span><span style="color: #800000; font-weight: bold;">4</span>,<span style="color: #800000; font-weight: bold;">1</span>) <span style="color: #0000ff;">from</span> dual; <span style="color: #008080;">--</span><span style="color: #008080;">返回结果:5 <br> --也就是说:在"tandashi"的倒数第4位(字母a)开始,往回查找第一次出现的“a”的位置</span>

 

可这个函数有什么用处了,看起来没啥用,想想String.contains() 是如何使用的,判断是否包含某个字符串,所以在Oracle中也可以这么使用

  1. <span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span> tableName <span style="color: #0000ff;">where</span> instr(name,<span style="color: #ff0000;">‘</span><span style="color: #ff0000;">tandashi</span><span style="color: #ff0000;">‘</span>)<span style="color: #808080;">></span><span style="color: #800000; font-weight: bold;">0</span>; <span style="color: #008080;">--</span><span style="color: #008080;"> 从表tableName 中查找字段name 包含 “tandashi” 的数据</span>

作用等同于MySQL中的

  1. <span style="color: #0000ff;">select</span> <span style="color: #808080;">*</span> <span style="color: #0000ff;">from</span> tableName <span style="color: #0000ff;">where</span> name <span style="color: #808080;">like</span> <span style="color: #ff0000;">‘</span><span style="color: #ff0000;">%tandashi%</span><span style="color: #ff0000;">‘</span>;

 

大家可以在数据库中执行一下,实际操作体会一下。

 

Oracle中instr()函数用法

标签:关注   contain   包含   nta   负数   索引   HERE   遇到   string   

人气教程排行