Oracle 数据库表中截取 两个 | 之间的内容,substr() instr()
一、需求
Oracle 数据库表中截取 两个 | 之间的内容
二、使用函数
1、substr()
格式1:substr(string string, int a, int b);
格式2:substr(string string, int a) ;
解释:
格式1:
1、string 需要截取的字符串
2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
3、b 要截取的字符串的长度
格式2:
1、string 需要截取的字符串
2、a 可以理解为从第a个字符开始截取后面所有的字符串。
2、instr()
函数格式:
instr( string1, string2 , start_position , nth_appearance )
instr(源字符串, 目标字符串, 起始位置,第 n 次匹配)
三、代码
找到 info 字段中 两个 | 之间的内容,--找 info字段中 '|'的位置,从第一个位置开始找,找其出现的第一次的位置, + 1表示取 | 之后的内容,-1表示取|之前的内容
SUBSTR(info, INSTR(info, '|', 1, 1)+1, INSTR(info, '|', 1, 2)-INSTR(info, '|', 1, 1)-1) -- 找 info字段中 '|'的位置,从第一个位置开始找,找其出现的第一次的位置, + 1表示取 | 之后的内容,-1表示取|之前的内容 -- 第二次出现的位置 减去 第一次出现的位置 减去 1 即是要截取的长度,也就是 substr() 函数最后一个参数的意义
以上,问题解决~