首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle PL/SQL:拆分字符串并获取最后一个分隔的子字符串

Oracle PL/SQL是Oracle数据库的编程语言,用于编写存储过程、触发器、函数和包等数据库对象。在PL/SQL中,可以使用内置函数和过程来处理字符串,包括拆分字符串并获取最后一个分隔的子字符串。

要拆分字符串并获取最后一个分隔的子字符串,可以使用SUBSTR和INSTR函数结合使用。具体步骤如下:

  1. 使用INSTR函数查找字符串中最后一个分隔符的位置。INSTR函数的语法为:INSTR(string, delimiter, start, occurrence)。其中,string是要查找的字符串,delimiter是分隔符,start是开始查找的位置,occurrence是要查找的分隔符的次数。为了查找最后一个分隔符,可以将occurrence设置为-1。
  2. 使用SUBSTR函数截取字符串中最后一个分隔符后的子字符串。SUBSTR函数的语法为:SUBSTR(string, start, length)。其中,string是要截取的字符串,start是开始截取的位置,length是要截取的长度。为了获取最后一个分隔符后的子字符串,可以将start设置为INSTR函数返回的位置加上分隔符的长度,length设置为字符串的长度减去start。

下面是一个示例代码:

代码语言:sql
复制
DECLARE
  v_string VARCHAR2(100) := 'abc:def:ghi';
  v_delimiter VARCHAR2(1) := ':';
  v_last_substring VARCHAR2(100);
  v_last_delimiter_position NUMBER;
BEGIN
  v_last_delimiter_position := INSTR(v_string, v_delimiter, 1, -1);
  v_last_substring := SUBSTR(v_string, v_last_delimiter_position + 1, LENGTH(v_string) - v_last_delimiter_position);
  DBMS_OUTPUT.PUT_LINE('Last Substring: ' || v_last_substring);
END;

以上代码将输出:Last Substring: ghi,即获取到了最后一个分隔的子字符串。

在腾讯云的产品中,可以使用腾讯云数据库(TencentDB)来存储和管理数据,其中包括支持PL/SQL语言的Oracle数据库。您可以通过腾讯云数据库产品页面(https://cloud.tencent.com/product/cdb)了解更多关于腾讯云数据库的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

巧用SQL:oracle plsql split函数

李伟 专注于oracle pl/sql开发和Java开发,擅长复杂业务逻辑、算法的pl/sql实现。 背景 在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作。...这种做法功能是实现了,但是多调用了一次数据库连接,多写了一个DAO方法,多写了一个ORM持久层方法。 把问题交给pl/sql程序员怎么样呢?...二是字符串拆分,oracle没有实现该功能,但是java提供了split函数实现了字符串拆分功能。 我们可以参考java的split函数写一个oracle版split函数。...split函数的功能是将字符串按照特定字符分隔为多个小字符串,返回结果以List或数组类型保存。...注意:listagg是oracle 11.2版本的新功能。 至此,便简单实现了oracle的字符拆分与拼接。

2.3K60

通过shell来比较oracle和java中的字符串使用(r4笔记第49天)

结尾的子字符串 oracle中也有substring,相比来说功能要更丰富,注意在java中是substring,而在oracle是substr [ora11g@rac1 ~]$ ksh test1.sh...Bc [ora11g@rac1 ~]$ ksh test2.sh "substr('ABcd',1,2)" --注意oracle中的小标是从1开始,最后的参数2代表需要截取的字符串长度为2,所以截取了...[ora11g@rac1 ~]$ ksh test2.sh "ltrim(' abcd')" LTRI ---- abcd public String[] split(String regex) 将一个字符串按照指定的分隔符分隔...,返回分隔后的字符串数组 oracle中目前没有发现有现成的方法实现,只能自己DIY通过pl/sql来实现,内部也是在使用substr来递归解析。...下面的例子会将字符串”abcd abcd"以空格分割,最后返回的是一个数组,我们来看看里面的内容。

1.8K50
  • Oracle PLSQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法...,结构和组件、以及如何设计并执行一个PL/SQL程序。  ...PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL引擎处理...PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以使多行的,但分号表示该语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。...表名.Delete(记录数); //检索记录变量 First:获取第一个的索引 Next:下一个的索引 但是必须有参数 Last:最后一个的索引 SQL> declare

    2.8K10

    PG几个有趣的插件和工具介绍

    table 系统提供的虚拟表 SQL 函数 数学运算函数 Item Overview BITAND 执行位与操作 COSH 计算一个数字的双曲余弦 SINH 计算一个数字的双曲正弦 TANH 计算一个数字的双曲正切...字符串函数 Item Overview INSTR 返回子字符串在字符串中的位置 LENGTH 以字符数为单位返回字符串的长度 LENGTHB 以字节数为单位返回字符串的长度 LPAD 用字符序列左填充字符串到指定长度...LTRIM 从字符串的开头删除指定的字符 NLSSORT 返回一个字节字符串,用于根据区域设置对语言排序序列中的字符串进行排序 REGEXP_COUNT 在字符串中搜索正则表达式,并返回匹配次数 REGEXP_INSTR...NVL2 根据值是否为NULL返回替代值 聚合函数 Item Overview LISTAGG 将指定列的值按照指定的分隔符组合成一个字符串 MEDIAN 计算一组值的中位数 返回内部信息的函数...pg_top Current Query “Q”键并输入PID可以查看当前执行的SQL。

    75430

    PLSQL --> 语言基础

    --===================== -- PL/SQL --> 语言基础 --===================== PL/SQL是过程化的SQL语言,是ORACLE对SQL语言的扩展...一、PL/SQL程序语言的组成 主要由块组成 一个块由三个基本部分组成:声明、执行体、异常处理 PL/SQL块有匿名块和命名块 命名块会将代码保存到服务器 典型的块结构如下 [ DECLARE.../SQL的语言优点 支持SQL 高生成率,性能好 可移植性 与Oracle集成 二、PL/SQL的语法要素 PL/SQL语法要素包括字符集、标识符、文本、分隔符、注释等。...= 、^=、、>= 其它分隔符 ()、:= (赋值)、,(表表项的分隔)、| |(字符串连接) > (标号的结束) -- 单行注释 /* */ 多行注释...四、更多参考 有关SQL请参考 SQL 基础--> 子查询 SQL 基础-->多表查询 SQL基础-->分组与分组函数 SQL 基础-->常用函数 SQL 基础--> ROLLUP与CUBE运算符实现数据汇总

    89230

    【YashanDB观点】论Oracle兼容性,我们需要做什么

    YashanDB作为一款从核心理论到关键系统均为原创的数据库产品,从构建初期就具备了技术优势,在Oracle兼容性实现上,敢于亮剑并充分发挥工匠精神,不断打磨,努力构筑一个真正形神兼备的数据库产品。...语法功能实现上,YashanDB的DML/DQL已经包括运算符、FILTER、内连接、外连接、半连接、反半连接、分组、聚合、排序、集合、层次查询、子查询等能力,用户在Oracle上实现的SQL语句,几乎可以不用调整直接在...PL/SQL语言的功能:这是Oracle绑定很多用户应用的锁链,为了降低用户应用迁移成本,YashanDB实现了大部分的PL/SQL语句,如声明、赋值、控制、跳转、循环、游标处理、SQL语句、动态SQL...,如异构数据库间数据类型、字符集的映射,计划和表达式如何进行远端下推,复杂SQL的拆分,远端事务管理,复杂DML语句联动等。...写在最后在过去的几十年时间里,Oracle数据库凭借出色的产品能力与硬核的技术实力始终处于领先地位,使得国内诸多关键行业的企业级应用深度依赖Oracle。

    9810

    Web-第二十四天 Oracle学习【悟空教程】

    如果存在多个排序字段可以用逗号分隔 ? 注意ORDER BY语句要放在sql的最后执行。...获取字符串的长度 length('hello') ? 4. 字符串替换,第一个参数是源字符串,第二个参数被替换的字符串,第三个是替换字符串 replace('hello', 'l','x') ?...TO_CHAR:字符串转换函数 范例:查询所有的雇员将将年月日分开,此时可以使用TO_CHAR函数来拆分 拆分时需要使用通配符 年:y, 年是四位使用yyyy 月:m, 月是两位使用mm 日:d, 日是两位使用...PL/SQL工具包含三种方式导出Oracle表结构及数据,三种方式分别为:Oracle Export 、SQL Inserts、PL/SQL Developer,下面分别简单介绍下区别: 第一种方式导出...十五、触发器 数据库触发器是一个与表相关联的、存储的PL/SQL程序。

    1.9K20

    Oracle 数据库拾遗(二)

    这些函数都是为了方便 SQL 对数据进行进一步处理而设计的,其使用大大增强了 PL/SQL 语言的功能。函数可以接受零个或者多个输入参数,并返回一个输出结果。...接下来我们主要介绍 PL/SQL 中的专用函数。 字符串函数 查找并替换字符串 字符串操作是 PL/SQL 中使用十分频繁的操作,常用的有字符串比较、返回字符串长度、查找和替换字符串等。...为方便用户对数据表中的字符串数据类型进行操作,PL/SQL 提供了大量的字符串操作函数。...查找并替换字符串函数是 REPLACE(): SELECT REPLACE(SDEPT, '计算机', 'Computer') FROM student; 获取字符的 ASCII 码 在获取用户从键盘上的输入时经常需要将字符转换为...NVL 在 SQL Server 中 MS T-SQL 中提供了一个函数 ISNULL 来判断一个字符串是否为空,Oracle PL/SQL 没有提供该函数,但使用了功能更为强大的函数来替代,即 NVL

    1.6K10

    巧用SQL:Oracle中实现split相关方法总结

    尚世波 从事数据库方面工作多年,专注于pl/sql开发、数据库设计、优化方面的研究,喜欢挑战 前文回顾:巧用SQL:oracle pl/sql split函数 看完上次的分享, 我很有感触,在软件开发过程中经常会出现按照某个字符进行分割字符串的情形...文章以‘,’(英文逗号)分割为例,另外设想传入的字符串为未知变量,书写通用的sql进行说明和演示 方法一:sql实现方法之正则表达式 可以使用 Oracle 自带的正则函数 regexp_count 和...regexp_substr 来实现,这种方法很简单,并且考虑了字符串以分隔符结尾的情况。...(1)一般情况下,输入n个字符串,加入n-1个分隔符,即末尾没有分隔符的时候,判断或者不判断不会影响结果。...如下图: (2)当输入字符的末尾有分隔符的时候,判断与不判断的结果不同 a.不判断末尾分隔符 (2)判断末尾分隔符 方法三:PL/SQL实现方法之管道函数 使用管道函数也可以很方便的实现,调用方便,但是代码量较多

    10.4K50

    如何高效使用YashanDB PL语言?这5点建议值得收藏

    当这个范围缩小到PL语言时,Oracle兼容性的视角该如何呈现呢?Oracle兼容性是目前国产数据库最主要的一个工作任务,这个任务直接决定了数据库在做商业迁移时的成本,是商业竞争力的一个重要指标。...建议3:SQL查询相关的PL特性选择PL语言中常见的使用SQL的方式,有静态SQL特性、游标、动态SQL等。常见的业务逻辑是通过SQL获取数据后,需要进一步加工处理,然后返回处理后结果。...; 静态SQL语句可以使用隐式游标属性来获取SQL执行状态。...最后再是使用动态SQL特性。动态SQL适用于资源动态生成、动态拼接SQL语句和执行DDL语句,PL编译阶段难以检测的,需要到执行阶段进行编译执行,灵活度高但执行效率较低。...再举一个例子,比如实现了一个自定义公共的字符串替换函数,当这个函数的实现发生变更,那么所有依赖这个公共函数的PL对象、SQL语句等都应该发生失效重编译的动作,否则原编译结构中包含的实现逻辑就是错误的。

    7010

    Oracle 数据库中的数据质量运算符

    它包含各种有助于测试字符串之间的相似性/差异性级别的函数。在Oracle 23c中FUZZY_MATCH和PHONIC_ENCODE运算符扩展了数据库的模糊字符串匹配功能。...它确定两个字符串之间的相似性,并支持此处列出的几种算法。 FUZZY_MATCH 将要使用的算法作为第一个参数,要处理的字符串作为第二个和第三个参数,以及一些控制所需输出质量的可选参数。...BIGRAM 和 TRIGRAM 是 N-gram 匹配技术的实例,该技术计算两个字符串之间公共连续子字符串(gram)的数量。...它计算以单词(而不是字母)作为匹配单位的两个短语的 LEVENSHTEIN 或编辑距离。 LONGEST_COMMON_SUBSTRING 查找两个字符串之间的最长公共子字符串。...PHONIC_ENCODE 将要使用的算法作为第一个参数,要处理的字符串作为第二个参数,以及一个可选的 max_code_len 参数来控制所需输出的长度。

    23010

    MySql字符串拆分实现split功能(字段分割转列、转行)

    字符串转多行 需求描述 实现的sql 案例演示 字符串拆分: SUBSTRING_INDEX(str, delim, count) 替换函数:replace( str, from_str,...to_str) 获取字符串长度:LENGTH( str ) 实现的原理解析 实现sql 正式的原理解析 Step1:首先获取最后需被拆分成多少个字符串,利用 help_topic_id 来模拟遍历...SELECT SUBSTRING_INDEX('7654,7698,7782,7788',',',2); (2)获取最后一个到倒数第2个以逗号分隔符之后的所有字符 SELECT SUBSTRING_INDEX...('7654,7698,7782,7788',',',-2); 所以,我们的核心代码中的 -1 ,就是获取以逗号为分隔符的最后一个值;也就是7788 替换函数:replace( str, from_str...,可以加上分隔符;然后再用 字符串+分隔符作为 查找的字符串 来 匹配; 我们被查找的字符串 ids 中 再加上一个正常的 123, 再查看,如下图:确实是对的 一些特殊数据,可能字符串拆分出来后缀有的相同

    15.8K70

    传说中 6 个月都未必能全解开的 3 道 SQL 题,来挑战下?

    说起 itpub 就不得不说它与 Oracle 的渊源,多少大师都在这里诞生。想成为 SQL 大师,有个最快的方法,就是刷题。如果能刷遍这里的题,Oracle 工作,十拿九稳。...一行输出一个行号和一个解,按解所在的列字符串顺序从大到小排序。...,每行从第一列到最后一列依次输出 如矩阵(为明显起见,用下划线表示空格,实际做题的输入输出仍用空格) 1 1 1 _ 2 * 1 _ * 3 2 1 1 2 * 1 的字符串表示为: VAR v_str...,若单元格周围没有地雷,则保持空格,对上述输入,则输出: 111 2*1 *32112*1 正题 2):挖地雷之标出有地雷的格子 题目要求:用一句SQL实现或用一个PL/SQL函数实现。...第二题:给定一个局面,假定该局面一定为有效(不会出现一方比另一方多两子的情况,或者两方都有三子连线的情况),用SQL判断出哪一方有必胜策略,以及获胜方最多再下几子必定会获胜。

    60750

    字符转换的SQL需求

    前两天朋友提了一个和SQL有关的问题,准确地说,是和字符串转换有关的,首先我们创建测试表,用模拟数据进行说明, SQL> CREATE TABLE test(a VARCHAR2(30));Table...想法2.将需求进行拆分,单步执行, (1). 先将原始字符串,按照","分隔,拆出每个部分。 (2). 遍历(1)拆出的字符串进行转换,从xxdddddd转换为dddddd.xx。 (3)....参考《字段拆分多行的需求》,利用正则函数regexp_substr(a, '[^,]+',1,level),拆出","分隔的字符串,通过connect by level,实现行转列,此时中间结果的行数等于原始字符串...","分隔的组数。...SQL不能直接在其他数据库用,因此,如果朋友们对MySQL比较熟悉,甚至是PG或者其他各种数据库,可以根据需求,写个测试SQL发给我,我会补充今天的这个主题,通过一个需求,了解不同数据库中的实现,比较有意思

    1K20

    【DB笔试面试459】ORA-00904: wm_concat:invalid identifier错误如何解决?

    ♣ 答案部分 若在创建数据库的时候没有创建WMSYS用户,则在SQL或PL/SQL中有用到WM_CONCAT函数的时候就会报ORA-00904的错误。...其实,WMSYS用户下的WM_CONCAT函数有很重要的用途,比如行转列,但是该函数不稳定。例如,在Oracle 10g上返回的是字符串类型,但是在Oracle 11gR2上返回的是CLOB类型。...,函数的返回值是无分隔符的CLOB,在PL/SQL中要使用TO_CHAR进行转换: SYS@lhrdb21> SELECT D.USER_ID FROM DBA_USERS D WHERE D.USER_ID...,函数的返回值是以逗号为分隔符的CLOB,在PL/SQL中需要使用TO_CHAR进行转换: SYS@lhrdb21> SELECT D.USER_ID FROM DBA_USERS D WHERE D.USER_ID...,函数的返回值是以逗号为分隔符的字符串: SYS@lhrdb21> SELECT D.USER_ID FROM DBA_USERS D WHERE D.USER_ID IN (0, 5); USER_ID

    2.3K10

    Oracle-函数大全

    ORACLE函数大全 1. 第一讲 单行函数和组函数详解 PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序。...在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:    单行函数    组函数   本文将讨论如何利用单行函数以及使用规则。   ...SQL中的单行函数   SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。...,最后一个,或者都删除。...所有函数都有数字参数并返回数字值。所有三角函数的操作数和值都是弧度而不是角度,oracle没有提供内建的弧度和角度的转换函数。

    2.5K50

    ORA-00904: wm_concat:invalid identifier错误如何解决?

    ♣ 答案部分 若在创建数据库的时候没有创建WMSYS用户,则在SQL或PL/SQL中有用到WM_CONCAT函数的时候就会报ORA-00904的错误。...其实,WMSYS用户下的WM_CONCAT函数有很重要的用途,比如行转列,但是该函数不稳定。例如,在Oracle 10g上返回的是字符串类型,但是在Oracle 11gR2上返回的是CLOB类型。...,函数的返回值是无分隔符的CLOB,在PL/SQL中要使用TO_CHAR进行转换: SYS@lhrdb21> SELECT D.USER_ID FROM DBA_USERS D WHERE D.USER_ID...,函数的返回值是以逗号为分隔符的CLOB,在PL/SQL中需要使用TO_CHAR进行转换: SYS@lhrdb21> SELECT D.USER_ID FROM DBA_USERS D WHERE D.USER_ID...,函数的返回值是以逗号为分隔符的字符串: SYS@lhrdb21> SELECT D.USER_ID FROM DBA_USERS D WHERE D.USER_ID IN (0, 5); USER_ID

    1.5K30

    MySQL和Oracle对比之存储过程(r5笔记第7天)

    昨天晚上帮一个朋友处理了一个关于存储过程的问题,他需要迁移一些Oracle中的存储过程到MySQL中来,但是改了一部分的程序,发现MySQL中没法编译了,报了很多的错误。...> exec test_proc('test'); test insert into new_test(id,name)values(100,'100') PL/SQL procedure successfully...-------------------------------+ 1 row in set (0.01 sec) Query OK, 0 rows affected (0.01 sec) 第一处是分隔符的问题...第五处是声明变量在MySQL中就需要逐步声明,declare,但是在Oracle中是作为匿名pl/sql块一样来处理 第六处是变量初始化,在oracle中直接使用stmt_bz:=100; 但是在MySQL...中需要用set stmt_bz=100; 第七处是关于字符串拼接,在MySQL中会用concat,在Oracle中可以使用||来拼接。

    76050
    领券