千家信息网

Oracle字符串截取和拼接应用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天有人问了个关于Oracle字符串截取和拼接的问题,让我帮他写出SQL,看了下问题描述还比较清晰就试着解决下,利用午休时间把功能实现了,问题看似不难,但思路一定要清晰,不然就乱了,关键大量应用了Or
千家信息网最后更新 2026年11月01日Oracle字符串截取和拼接应用

今天有人问了个关于Oracle字符串截取和拼接的问题,让我帮他写出SQL,看了下问题描述还比较清晰就试着解决下,利用午休时间把功能实现了,问题看似不难,但思路一定要清晰,不然就乱了,关键大量应用了Oracle的substr 和instr函数,下面贴出问题和脚本:

问题:sql中一个字段值为:1788987565327、768374872394903、21437238740213483874629、23412341234252345。其中顿号间隔的每一组数字位数和尾数不定,现在要使前面这个字段值中顿号前的数字尾数即7、3、9、5都分别加1,变成8、4、0、6输出成1788987565328、768374872394904、21437238740213483874620、23412341234252346。注意其中第三个数,从9加1后,输出成0,而不是10

脚本:

declare    targetstr varchar2(2000);    strlength number;    position number;    maxposition number;    retrunstr varchar2(2000);    tempstr varchar2(2000);    endstr number;begin    targetstr := '1788987565327、768374872394903、21437238740213483874629、23412341234252345';    maxposition := 0;    select LENGTH(targetstr) into strlength  from dual;    for i in 1..strlength loop        select instr(str,'、',1,i) into position from (select targetstr as str from dual);        --dbms_output.PUT_LINE(position);        if position > 0 then             if maxposition = 0 then                 select substr(str,0,instr(str,'、',1,1)-1) into retrunstr from (select targetstr as str from dual);                select TO_NUMBER(substr(restr,-1)) into endstr from (select retrunstr as restr from dual);                if endstr = 3 or endstr = 5 or endstr = 7 then                    endstr := endstr + 1;                elsif endstr = 9 then                    endstr := 0;                end if;                select substr(str,0,instr(str,'、',1,1)-2)||TO_CHAR(endstr) into retrunstr from (select targetstr as str from dual);            elsif maxposition < position then                select substr(str,instr(str,'、',1,i-1)+1,instr(str,'、',1,i)-instr(str,'、',1,i-1)-1) into tempstr from (select targetstr as str from dual);                select TO_NUMBER(substr(restr,-1)) into endstr from (select tempstr as restr from dual);                if endstr = 3 or endstr = 5 or endstr = 7 then                    endstr := endstr + 1;                elsif endstr = 9 then                    endstr := 0;                end if;                select substr(str,1,length(str)-1) ||TO_CHAR(endstr) into tempstr from (select tempstr as str from dual);                retrunstr := retrunstr || '、'|| tempstr;                         end if;            maxposition := position;        else            if maxposition > position then                --特别处理最后一段                tempstr := '';                select substr(str,maxposition-length(str)) into tempstr from (select targetstr as str from dual);                select TO_NUMBER(substr(restr,-1)) into endstr from (select tempstr as restr from dual);                if endstr = 3 or endstr = 5 or endstr = 7 then                    endstr := endstr + 1;                elsif endstr = 9 then                    endstr := 0;                end if;                select substr(str,1,length(str)-1) ||TO_CHAR(endstr) into tempstr from (select tempstr as str from dual);                retrunstr := retrunstr || '、'|| tempstr;            end if;            exit;        end if;    end loop;    dbms_output.PUT_LINE(retrunstr);end;

运行结果如下:

原字符串:1788987565327、768374872394903、21437238740213483874629、23412341234252345

14:03:38 **** SCRIPT STARTED: 02-Apr-2015 14:03:38 ****
14:03:38 declare
14:03:38 targetstr varchar2(2000);
14:03:38 ...
14:03:39 PL/SQL block executed
1788987565328、768374872394904、21437238740213483874620、23412341234252346
14:03:39 **** SCRIPT ENDED 02-Apr-2015 14:03:39 ****
14:03:39 End Script Execution

问题 字符 字符串 字段 尾数 数字 脚本 顿号 输出 应用 个数 位数 关键 函数 功能 思路 时间 结果 运行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技活动banner 中国互联网科技股 厦门中拓互联网络科技有限公司 互联网科技社 齐家互联网科技 世界互联网领先科技成果 美国互联网黑科技 伴你行互联网科技有限公司 佰商互联网科技有限公司 贵州叶脉互联网科技有限公司所属行业 互联网科技革命什么开始 互联网方面的科技前沿 黑科技 体验场景 互联网大会 工业互联网科技创业 上海乐五互联网科技有限公司 云鲸互联网络科技有限公司 互联网高科技行业有哪些企业 互联网科技企业商标注意事项 第三届互联网大会安防黑科技 数字科技和互联网金融哪个好 广东猪兼强互联网科技有限公司 互联网科技财经 互联网 科技 消费医药和互联网科技 区块链结合互联网科技 互联网时代的科技公司 元气玛特互联网科技公司是外包吗 广州千川互联网科技有限公司 湖北辰鑫科技互联网 山东亿川互联网科技有限责任公司
0