Oracle中的instr和substr函数用法
来源:互联网 发布:华南师范大学 网络缴费 编辑:程序博客网 时间:2024/04/20 02:20
数据库类型:Oracle
一、
函数:instr(String,str[,start_position[,times_appearence]])
作用:返回str在string中的位置。
参数:
String:字符;
str:目标字符;
start_position:查找的起始位置,默认是1,表示从第一个字符开始查找。
times_appearence:查找第几次出现的str,默认是1,表示查找的是第一次出现的str。
解释:
中括号表示:括号中的内容可有可无;
中括号中的中括号表示:必须先有外面中括号的参数,然后才会可以设置内中括号的参数。
举例:
Oracle中:select instr (name,'c',1,2) as position from test;
结果:
二、
函数:substr(字符串,截取开始位置,截取长度)
作用:从某位置开始,截取该字符串指定长度内的内容。
参数:
字符串:操作字符串;
截取开始位置:0和1均表示从开始位置截取;(所以2就代表第二个位置,3就代表第三个位置,以此类推);
截取长度:截取的字符串的长度;
举例:
Oracle:select name , substr(name,2,1) as str from test;
结果:
三、两个函数合用实现截取指定符号之间的字符。
前期工作:创建一个只有name列的表test,并插入如下数据:
- insert into test values('CA-CA1344-A-11OCT141250-D');
- insert into test values('JD-JD693-A-11OCT141105-D');
目的:截取第一个 '-' 与第二个 '-' 之间的内容。
分析:
1.substr函数可以截取字符,但是需要开始截取位置,以及截取的字符内容长度;
select substr (name,开始截取位置,截取字符长度) from test;
2.开始截取位置等于:
第一个 '-' 的位置 + 1。(如果不加1的话,说明是从'-'位置就开始截取了,那么结果中将带这'-'这个符号)
同等于: instr(name,'-',1,1)+1 (1,1)表示从第一个位置开始匹配,知道找到第一个'-',根据最上面提供的函数公式,这两个参数可省。
3.截取的字符长度等于:
第二个 '-' 和第一个 '-' 的位置 ,二者相减再多减1就是两个'-'之间字符的长度。
同等于: instr(name,'-',1,2) - instr(name,'-',1,1) - 1
最终Sql:
select substr(name , instr(name,'-') + 1 , instr(name,'-',1,2) - instr(name,'-') - 1 ) as str from test;
规律:如果是截取第二个 - 和 第四个 - 之间的字符,那么,只需要更改instr函数中的参数内容即可,+1或者是-1是固定的。不信,可以试一下的。
如果提醒substr是无效的函数,那么需要给substr大写,并且添上拼音状态下的双引号。
- Oracle中的instr和substr函数用法
- oracle中的instr和substr函数
- oracle中instr函数和substr函数的浅用法
- Oracle中的INSTR,NVL和SUBSTR函数的用法代码实例
- oracle的substr和instr函数的用法
- Oracle的SUBSTR()和INSTR()以及REGEXP_SUBSTR()函数的用法
- Oracle的instr函数和substr函数
- Oracle中INSTR和SUBSTR的用法
- Oracle substr 和 instr 的用法
- oracle中substr和instr的用法
- Oracle中INSTR和SUBSTR的用法
- Oracle中INSTR和SUBSTR用法
- Oracle中INSTR和SUBSTR的用法
- Oracle中INSTR和SUBSTR的用法
- Oracle中INSTR和SUBSTR的用法
- Oracle中INSTR和SUBSTR的用法
- Oracle中INSTR和SUBSTR的用法
- Oracle中INSTR和SUBSTR的用法
- HashSet vs. TreeSet vs. LinkedHashSet
- 文章标题
- redis同步登陆实现session共享
- [YZOJ]P3290-暴力-性质题
- ES6的一些学习
- Oracle中的instr和substr函数用法
- Android中常用的数据结构详解
- 需要一些特殊的图形或者表格动作
- c++中小数点显示几位的问题
- Vue学习之源码分析--从Vue.js源码角度再看数据绑定(三)
- Cg Programming/Unity/Smooth Specular Highlights平滑镜面高光
- 微服务熔断与隔离
- 第1章 导论
- nodejs child _process模块