首页
学习
活动
专区
工具
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)了解更多关于腾讯云数据库的信息。

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

相关·内容

巧用SQLoracle plsql split函数

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

2.1K60

通过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/SQLORACLE对标准数据库语言扩展,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.7K10

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

43630

PLSQL --> 语言基础

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

85730

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

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.8K20

巧用SQLOracle中实现split相关方法总结

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

7K50

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

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

16010

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, 再查看,如下图:确实是对 一些特殊数据,可能字符串拆分出来后缀有的相同

11.4K70

字符转换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

传说中 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判断出哪一方有必胜策略,以及获胜方最多再下几必定会获胜。

59150

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

♣ 答案部分 若在创建数据库时候没有创建WMSYS用户,则在SQLPL/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.2K10

Oracle-函数大全

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

2.4K50

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

♣ 答案部分 若在创建数据库时候没有创建WMSYS用户,则在SQLPL/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

99530

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中可以使用||来拼接。

71950

MySQL字符串分割_c语言中如何截取字符串

分隔字符串拆分 题目要求 数据库中 num字段值为: 实现效果:需要将一行数据变成多行 实现SQL SELECT SUBSTRING_INDEX(SUBSTRING_INDEX...---- 一、字符串拆分: SUBSTRING_INDEX(str, delim, count) 参数解说 参数名 解释 str 需要拆分字符串 delim 分隔符,通过某字符进行拆分 count...举例 (1)获取 ‘7654,7698,7782,7788’ 字符串长度 LENGTH('7654,7698,7782,7788') 实现SQL解析 ---- SELECT SUBSTRING_INDEX...help_topic 表: 实现步骤: Step1:首先获取最后需被拆分成多少个字符串,利用 help_topic_id 来模拟遍历 第n个字符串。...) ---- 最终成功实现了以下效果 ~ 注:不含分隔字符串拆分可参考 MySQL——字符串拆分(无分隔字符串截取) 如果以上有错误地方,希望大家能够指正 ~ 谢谢 ~ 如果你有更好方法

2.8K10
领券