Oracle截取字符串:instr、substr、length函数的使用

导读:本篇文章讲解 Oracle截取字符串:instr、substr、length函数的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.字段中有以下字符串数据:

张三(zhangsan)

2.截取代码

ps:我的数据库表名为”shuizhu_test”,该字段名为”username”,详细请看第三大点

2.1 截取代码①如下【获取“张三”】:

select 
    substr(username,1,instr(username,'(',1,1)-1)
from
    shuizhu_test

查询结果: “张三

大致思路:

  1. 通过instr函数,计算第一次出现”(“符号的位置,最后面的-1表示第一个”(“符号前的位置,即”张(zhangsan)”中,红色字体的位置
  2. 通过substr函数,截取字符串,得到”张三”

2.2 截取代码②如下【获取”zhangsan”】:

select 
    substr(
         username
         ,instr(username,'(',1,1)+1
         ,length(username)-length(substr(username,1,instr(username,'(',1,1)))-1
    )
from
    shuizhu_test

大致思路:

  1. substr函数第一个参数是字符串本身,即“张三(zhangsan)”
  2. 第二个参数《instr(username,'(‘,1,1)+1》表示出现第一个”(“符号的下标位置,最后面的+1表示”(“符号后面的字符,即“张三(zhangsan)”红色字符的下标,在substr函数中,第二个参数就是开始截取字符串的位置
  3. 第三个参数是截取字符串的长度,我们需要length函数,对username后面的字符长度进行计算(固定写数字8肯定能截取”zhangsan”,但是其他数据怎么办?),长度计算流程:
  • <1>先统计username的长度:length(username)
  • <2>再获取第一次出现”)”符号的位置:length(substr(username,1,instr(username,'(‘,1,1))
  • <3>把<1>减去<2>,就能得到剩下的字符串,最后再-1,把”zhangsan)”末尾的”)”去掉,finish

3.函数释义

instr函数

作用:instr函数对某个字符串进行判断,判断其是否含有指定的字符

语法:instr(sourceString,destString,start,appearPosition)

汉译:instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

解释:

  • sourceString代表源字符串;

  • destString代表想从源字符串中查找的子串;

  • start代表查找的开始位置,该参数可选的,默认为1;

  • appearPosition代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1;

substr函数

作用:截取字符串,与Java一致

语法1:substr(string string, int a, int b);

解释:

  • string 需要截取的字符串
  • a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)
  • b 要截取的字符串的长度

语法2:substr(string string, int a) ;

解释:

  • string 需要截取的字符串
  • a 可以理解为从第a个字符开始截取后面所有的字符串。

length函数

 作用:获取字符串的长度

 语法:length(字符串)

 解释:返回字符串的长度【字符】

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99603.html

(0)
小半的头像小半

相关推荐

  • [datapump] ORA-39034: Table TABLE_DATA: does not exist.
    00686
    飞熊的头像 飞熊
    2023年5月4日
  • 极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!