java中instr函数,Oracle中instr函数使用方法
INSTR (源字符串, 目标字符串, 起始位置, 匹配序号)
在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。
语法如下:
instr( string1, string2 [, start_position [, nth_appearance ] ] )
参数分析:
string1
源字符串,要在此字符串中查找。
string2
要在string1中查找的字符串.
start_position
代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance
代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
注意:
如果String2在String1中没有找到,instr函数返回0.
示例:
SELECT instr('syranmo','s') FROM dual; -- 返回 1
SELECT instr('syranmo','ra') FROM dual; -- 返回 3
SELECT instr('syran mo','a',1,2) FROM dual; -- 返回 0
(根据条件,由于a只出现一次,第四个参数2,就是说第2次出现a的位置,显然第2次是没有再出现了,所以结果返回0。注意空格也算一个字符!)
SELECT instr('syranmo','an',-1,1) FROM dual; -- 返回 4
(就算是由右到左数,索引的位置还是要看‘an'的左边第一个字母的位置,所以这里返回4)
SELECT instr('abc','d') FROM dual; -- 返回 0
注:也可利用此函数来检查String1中是否包含String2,如果返回0表示不包含,否则表示包含。
对于上面说到的,我们可以这样运用instr函数。请看下面示例:
如果我有一份资料,上面都是一些员工的工号(字段:CODE),可是我现在要查询出他们的所有员工情况,例如名字,部门,职业等等,这里举例是两个员工,工号分别是'A10001′,'A10002′,其中假设staff是员工表,那正常的做法就如下:
SELECT code , name , dept, occupation FROM staff WHERE code IN ('A10001','A10002');
或者:
SELECT code , name , dept, occupation FROM staff WHERE code = 'A10001' OR code = 'A10002';
有时候员工比较多,我们对于那个'觉得比较麻烦,于是就想,可以一次性导出来么?这时候你就可以用instr函数,如下:
SELECT code , name , dept, occupation FROM staff WHERE instr('A10001,A10002',code)>0;
查询出来结果一样,这样前后只用到两次单引号,相对方便点。
还有一个用法,如下:
SELECT code, name, dept, occupation FROM staff WHERE instr(code, '001') > 0;
等同于
SELECT code, name, dept, occupation FROM staff WHERE code LIKE '%001%' ;
Oracle的instr函数使用实例
INSTR方法的格式为
INSTR(src, subStr,startIndex, count)
src: 源字符串
subStr : 要查找的子串
startIndex : 从第几个字符开始。负数表示从右往左查找。
count: 要找到第几个匹配的序号
返回值: 子串在字符串中的位置,第1个为1;不存在为0. (特别注意:如果src为空字符串,返回值为null)。
用法举例:
最简单的一种,查找l字符,首个l位于第3个位置。
SQL> select instr('hello,java world', 'l') from dual;
INSTR('HELLO,JAVAWORLD','L')
----------------------------
3
查找l字符,从第4个位置开始。
SQL> select instr('hello,java world', 'l', 4) from dual;
INSTR('HELLO,JAVAWORLD','L',4)
------------------------------
4
查找l字符,从第1个位置开始的第3个
SQL> select instr('hello,java world', 'l', 1, 3) from dual;
INSTR('HELLO,JAVAWORLD','L',1,
------------------------------
15
查找l字符,从右边第1个位置开始,从右往左查找第3个(也即是从左到右的第1个)
SQL> select instr('hello,java world', 'l', -1, 3) from dual;
INSTR('HELLO,JAVAWORLD','L',-1
------------------------------
3
找不到返回0
SQL> select instr('hello,java world', 'MM') from dual;
INSTR('HELLO,JAVAWORLD','MM')
-----------------------------
0
源字符为空字符串''的情况
java中instr函数,Oracle中instr函数使用方法相关推荐
- Oracle INSTR 用法 Oracle 字符串搜索函数 INSTR Oracle instr 函数和like模糊查询对比 Oracle INSTR 用法
Oracle INSTR 用法 Oracle 字符串搜索函数 INSTR Oracle instr 函数和like模糊查询对比 一.instr 函数 1.instr函数语法规则:i ...
- oracle中转换函数,Oracle中的转换函数
Oracle中的转换函数有三个,分别为to_char(),to_date(),to_number() 1.to_char()的用法 格式化当前的日期时间 select sysdate,to_char( ...
- oracle中having作用,oracle中having与where的区别
1.where 不能放在group by 的后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE 3.WHERE 后面的条件中不能有聚集函 ...
- oracle中rowid列,Oracle中的rowid
ROWID是ORACLE中的一个重要的概念.用于定位数据库中一条记录的一个相对唯一地址值.通常情况下,该值在该行数据插入到数据库表时即被确定且唯一.ROWID它是一个伪列,它并不实际存在于表中.它是O ...
- oracle关于字符串函数,Oracle字符串处理函数
Oracle字符串处理函数 Oracle字符串处理函数 2008年10月18日 星期六 23:45 项目中有涉及存储过程对字符串的处理,所以就将在网上查找到的资料汇总,做一个信息拼接式的总结. 以下信 ...
- mysql中varchar与oracle中varchar2区别
一.字符与字节关系 一)"字节"的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位. (二)"字符"的定义 ...
- oracle怎么用charindex,SQL中Charindex和Oracle中对应的函数Instr对比
sql :charindex('字符串',字段)>0 charindex('administrator',MUserID)>0 oracle:instr(字段,'字符串',1,1) > ...
- oracle中正则表达式规则,Oracle中的正则表达式(及函数)详解
1.概述 相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,虽然我们实际使用的时候也并不一定太多,但是当我们要处理字符串时,它确实是一个强大的工具. 上一篇文 ...
- php instr函数,oracle的instr函数用法
这几天在做一个项目的时候,做到关于用户组权限分配的问题,用到了Oracle的instr函数,现在好好学习下这个函数吧. 在Oracle/PLSQL中, instr 函数返回要截取的字符串在源字符串中的 ...
最新文章
- input输入系统中是如何实现按键重复
- python爬虫项目教程_Python 爬虫速成教程,还有35个实战项目送给你
- OpenStack在keystone部分同步数据库报错Errno 13解决办法
- wuhan2020新型冠状病毒防疫信息收集平台社区版非正式发布
- 【纯技术贴】.NETStandard FreeSql v0.0.9 功能预览
- 实现tree系统命令
- python mysql 连接6_寒假学习进度-6(Python连接MySQL数据库)
- java铝轮_为速度而生 JAVA Fuoco铝合金气动公路
- VBA GetOpenFilename 方法
- 4K屏幕+5500万像素摄像头,以成未来手机的一大趋势
- 25个优秀的UI设计资源下载
- Cocos2d-x动作CCAction
- 7-6 What is a computer? (5 分)
- Android图形显示系统——下层显示1:基础知识与相关文件
- android 按钮变形动画,android-动画切换按钮
- 【老生谈算法】基于matlab的指纹处理和识别算法详解及程序源码——指纹识别算法
- 表格里面如何快捷给方框内打勾
- 点击修改按钮,将数据显示在弹层窗口中,利用ajax实现
- 联盟 (Alliances)
- python入门题库 赶紧来试试自己的水平吧
热门文章
- android 直接v4l2驱动,基於V4L2驅動程序的USB攝像頭Android(JNI)的編寫(三)
- 命令行里的方括号、尖括号是什么
- java cas 实现_Java CAS算法简介及简单模拟CAS算法
- mysql java 社工库_社工库源码搜集
- Pycharm专业版详细安装教程
- 自然语言处理(1)深度学习基础及其通用模板
- Liouville定理(实际上是Liouville第二定理)+切比雪夫定理
- Photoshop-添加杂色滤镜的两种方法
- 那年,我们一起演的年会节目
- 【HIT-计算机系统】ICS-Lab2 DataLab