Oracle中的substr()函数的应用及解析

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)实例解析

实例:

1、substr("HelloWorld",0,3);  //返回结果:Hel,截取从H开始3个字符
2、substr("HelloWorld",1,3);  //返回结果:Hel,截取从H开始3个字符
3、substr("HelloWorld",2,3);  //返回结果:ell,截取从e开始3个字符
4、substr("HelloWorld",0,100);  //返回结果:HelloWorld,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
5、substr("HelloWorld",-1,3);  //返回结果:d
6、substr("HelloWorld",-2,3);  //返回结果:ld
7、substr("HelloWorld",-3,3);  //返回结果:rld
8、substr("HelloWorld",-4,3);  //返回结果:orl

注:当a等于0或1时,都是从第一位开始截取(如:1和2)
注:虽然5、6、7、8截取的都是3个字符,结果却不是3 个字符; 只要a<b,取a得个数(如:5、6、7),当a>b时,才取b的个数(如:7和8)

9、substr("HelloWorld",0);  //返回结果:HelloWorld,截取所有字符
10、substr("HelloWorld",1);  //返回结果:HelloWorld,截取所有字符
11、substr("HelloWorld",2);  //返回结果:elloWorld,截取从e开始之后所有字符
12、substr("HelloWorld",3);  //返回结果:lloWorld,截取从l开始之后所有字符
13、substr("HelloWorld",-1);  //返回结果:d,从最后一个d开始 往回截取1个字符
14、substr("HelloWorld",-2);  //返回结果:ld,从最后一个d开始 往回截取2个字符
15、substr("HelloWorld",-3);  //返回结果:rld,从最后一个d开始 往回截取3个字符

注:当只有两个参数时;不管是负几,都是从最后一个开始 往回截取(如:13、14、15)

 图解:

1、

2、

5、

6、

7、

8、

13、

14、

15、

 3)完整函数实例

create or replace function get_request_code return varchar2 AS

       -- 函数的作用:自动生成单号
       v_mca_no   mcode_apply_01.mca_no%TYPE;

       CURSOR get_max_mca_no IS
              SELECT max(substr(mca_no, 11, 1)) -- 查出的最大单号,截取出最后三位,如001、002...00n
              FROM  mcode_apply_01
              WHERE  substr(mca_no, 3, 8) = to_char(sysdate, ‘YYYYMMDD‘); -- 生成(从第三位开始)日期【如:20170422】

        v_requestcode VARCHAR2(3);

  BEGIN
       OPEN get_max_mca_no;
       FETCH get_max_mca_no INTO v_requestcode;
       CLOSE get_max_mca_no;

  IF v_requestcode IS NULL THEN
       v_requestcode := NVL(v_requestcode, 0);  -- NVL()函数:当v_requestcode为NULL时,取0作为值
  END IF;

       v_requestcode := lpad(v_requestcode + 1, 3, ‘0‘);  -- 将游标中截取到的值加1,然后向左填充0,生成 001...00n 序号; lpad()函数:向左填充
       v_mca_no := ‘MA‘ || to_char(sysdate, ‘YYYYMMDD‘) || v_requestcode;  -- 最终生成的申请单号(如:MA20170422001;MA20170422002;...MA2017042200N )

  RETURN ‘0~,‘|| v_mca_no; 

END ;
时间: 2024-10-11 02:30:02

Oracle中的substr()函数的应用及解析的相关文章

Oracle中的substr()函数 详解及应用

注:本文来源于<Oracle中的substr()函数 详解及应用> 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:     

oralce逗号分割变多行 Oracle中REGEXP SUBSTR函数

Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合. REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcstr     :需要进行正则处理的字符串 __pattern    :进行匹配的正则表

db2中left()函数和right()函数对应oracle中的substr()函数

DB2 LEFT.RIGHT函数 语法:LEFT(ARG,LENGTH).RIGHT(ARG,LENGTH) LEFT.RIGHT函数返回ARG最左边.右边的LENGTH个字符串,ARG可以是CHAR或BINARY STRING. eg:SELECT LEFT(NAME,2),RIGHT(NAME,2) FROM T1 ORACLE substr()函数 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H' 

Oracle中的单行函数

Oracle中的单行函数 1 字符函数 UPPER()--将字符串转换为大写 SELECT UPPER('abc') FROM dual; LOWER()-将字符串转换为小写 SELECT LOWER('ABC') FROM dual; INITCAP()-首字母大写,其它字母小写. SELECT INITCAP('hello') FROM dual; REPLACE()-将指定的字符/字符串替换 SELECT REPLACE('abcd efg','cd','XXX') FROM dual;

oracle中的常用函数

oracle中的常用函数 1. 字符串常用函数 函数名 说明 concat 用来连接字符串的函数,只能连接两个字符串.如果想连接多个字符串可以使用"||"符号 initcap 把每个单词的首字母大写. instr(‘母字符串’,‘子字符串’) 母字符串:被查找的字符串.子字符串:要查找的字符串. 如果有第三个参数,代表从第几个字符开始查找. 第四个参数代表查询第几次出现的字符串的下标,默认是1. 查询不到返回0 select instr('410106199012132018','19

Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题

转: Oracle中使用Table()函数解决For循环中不写成 in (l_idlist)形式的问题 在实际PL/SQL编程中,我们要对动态取出来的一组数据,进行For循环处理,其基本程序逻辑为: 1 2 3 4 5 6 7 8 9 10 11 12 create or replace procedure getidlist is   l_idlist varchar2(200); begin   l_idlist:='1,2,3,4';   for brrs in (select * fro

oracle中的聚合函数count、max、min、sum、avg以及NVL函数的用法

oracle中的聚合函数count.max.min.sum.avg以及NVL函数的用法 分组函数聚合函数对一组行中的某个列执行计算执行计算并返回单一的值.聚合函数忽略空值.聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用,所以有的时候也把其称之为分组函数.这类函数通常应用于报表统计中,以下展示Oracle常用的聚合函数的应用. 分组函数的介绍 作用于一组数据,并对一组数据返回一个值. 常见的分组函数有: Count 用来计算有效数据的数量 Min 返回一个数字列或计算列的最小

oracle || 跟(+) + substr 函数 用法总结

oracle || 和(+) + substr 函数 用法总结 [substr函数用法] substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符 substr('Hello World',2,4) //返回结果为 'ello' substr('

oracle中的trim()函数详解

1.先看一下Oracle TRIM函数的完整语法描述 TRIM([ { { LEADING | TRAILING | BOTH }[ trim_character ]| trim_character}FROM]trim_source) 以上语法引自于Oracle 10gR2官方文档:http://download.oracle.com/docs/ ... 0/img_text/trim.htm单从这个语法定义上我们就可以看出,小小的Oracle TRIM函数蕴含了更多可定制的功能.一一展示,供参