Oracle函数SUBSTR、REGEXP_SUBSTR、LPAD使用详解

        很多时候在做项目需求时代码实现一系列任务相对比较复杂时,在数据库中往往都是有比较适用的函数供以调用,这里以最近在项目中使用的三个函数,在此总结三个函数的使用场景和使用方法。

    一.substr字符串截取函数

    substr俗称字符串截取函数,一般用于对字符串进行截取,也就是可以用于对于查询的字段进行截取后注入结果集合中。下面先看看函数的两种用法:

  1. substr(string str,int index) 从字符串的index(索引)位置开始截取,截取后面所有的字符串。
  2. substr(string str,int index,int length)从字符串的index(索引)位置开始截取,截取长度为length的字符串。

    如有下列一个表TEST

    

    截取NUMBER,从第一个数开始截取,截取长度为3位:

    Oracle函数SUBSTR、REGEXP_SUBSTR、LPAD使用详解_第1张图片

    二.regexp_substr函数

      regexp_substr函数支持正则表达式来对字符串进行切割。相应很多人都在项目中遇到过在某一个表的某一个字段中根据某些特殊符号比如","对字符串进行的拼接的数据的存储的类型。在本次项目中有这样一次需求,在一个系统之外的数据表格中对车辆的外形参数定义为:长、宽、高的数据用逗号分隔后存入了库中的一个字段中,先需要将该字段的三段分离出来,分别存入到不同的字段中,当然实现的方式可能有很多种,我采用了insert into select的方式,先用regexp-substr将该字段拆分为三个字段,再以insert into select的方式插入到了我们需要的业务表里,全程非常快速。
    同样利用TEST表,在该表中插入一条数据模拟该过程。
   
    先上效果图

    Oracle函数SUBSTR、REGEXP_SUBSTR、LPAD使用详解_第2张图片

    regexp_substr第一个参数是源字符串,第二个参数是正则表达式截取规则,第三个表示从第几个字符开始匹配正则表达式,第四个参数表示标识第几个匹配组,在本例中也就是说第几个","。

    三.LPAD函数

    lpad(string,n,[pad_string])函数,从左侧追加生成固定长度的字符串。   

  •     string:字符或者参数
  •     n:字符的长度,是返回的字符串的数量,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;
  •     pad_string:可选参数,这个字符串是要粘贴到string的左边,若这个参数未写,lpad函数将会在string的左边粘贴空格。

    我们经常会有这样一些需求,生成一些订单编号,这些订单编号往往是具有固定长度的一些数字组成的字符串,前面可能会由订单的日期决定,但是后面几位往往可能是系统订单依次增加的一个序列号来组成的订单号,如:20180708000001,前面六位是年月日,后面六位就是自动增长的一个序列,并且保证长度是不变的,那么我们可以借助这个函数和自增长序列来实现该功能。

    Oracle函数SUBSTR、REGEXP_SUBSTR、LPAD使用详解_第3张图片

    在我的测试系统中有一个订单为7的序列了,那么下一个订单号应该是什么呢?

    Oracle函数SUBSTR、REGEXP_SUBSTR、LPAD使用详解_第4张图片

你可能感兴趣的:(数据库)