码迷,mamicode.com
首页 > 数据库 > 详细

Oracle中instr()函数用法

时间:2020-06-01 01:05:46      阅读:107      评论:0      收藏:0      [点我收藏+]

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

大家可能平时不太关注Oracle中的函数方法,只记得常用的一些,今天谭谭就遇到了一个没用过的函数,在此记录一下

 

INSTR( string, substring [, start_position [, nth_appearance ] ] )

就是判断原字符串 string 是否包含子字符串 substring,并返回 substring所在的索引,Oracle索引是从1开始的,包含该子串时返回对应的索引位置,不包含则返回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次出现的索引位置。

 

索引位置

t    a    n    d    a    s    h    i
1    2    3    4    5    6    7    8

 

例子:

1 select instr(tandashi,a) from dual; --返回结果:2    默认第一次出现“a”的位置
2 select instr(tandashi,da) from dual; --返回结果:4   即“da”第一次出现的位置

 

1 select instr(tandashi,a,2,2) from dual;  --返回结果:5    
--也就是说:在"tandashi"的第2位(字母a)开始,查找第二次出现的“a”的位置

2 select instr(tandashi,a,3,1) from dual; --返回结果:5
--也就是说:在"tandashi"的第3位(字母n)开始,查找第一次出现的“a”的位置

3 select instr(tandashi,a,-1,2) from dual; --返回结果:2
--也就是说:在"tandashi"的倒数第1位(字母i)开始,往回查找第二次出现的“a”的位置

4 select instr(tandashi,a,-4,1) from dual; --返回结果:5
--也就是说:在"tandashi"的倒数第4位(字母a)开始,往回查找第一次出现的“a”的位置

 

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

select * from tableName where instr(name,tandashi)>0; -- 从表tableName 中查找字段name 包含 “tandashi” 的数据

作用等同于MySQL中的

select * from tableName where name like %tandashi%;

 

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

 

Oracle中instr()函数用法

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

原文地址:https://www.cnblogs.com/mindOpen/p/13022383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!