`

【转】Oracle用符号将字符串分割

阅读更多
Oracle中REGEXP_SUBSTR函数的使用说明:
题目如下:
在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合。
 
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr     :需要进行正则处理的字符串
__pattern    :进行匹配的正则表达式
__position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
 
1、查询使用正则分割后的第一个值,也就是17
[sql] 
SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL;  
结果:  www.2cto.com  
STR
-----
17
 
2、查询使用正则分割后的最后一个值,也就是23
[sql] 
SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,3,'i') AS STR FROM DUAL;  
结果:
STR
----
23
 
3、获取一个多个数值的列,从而能够让结果以多行的形式展示出来
[sql] 
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=7;  
结果:  www.2cto.com  
LEVEL
----
1
2
3
4
5
6
7
 
4、将上面REGEXP_SUBSTR的occurrence关联
[sql] 
SELECT NVL(REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i'), 'NULLL') AS STR  
  FROM DUAL  
CONNECT BY LEVEL <= 7;  
STR  www.2cto.com  
----
17
20
23
NULL
NULL
NULL
NULL
 
5、优化上面的SQL语句,让生成的行的数量符合实际情况
[sql] 
SELECT REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i') AS STR  
  FROM DUAL  
CONNECT BY LEVEL <=  
           LENGTH('17,20,23') - LENGTH(REGEXP_REPLACE('17,20,23', ',', ''))+1;  
STR
----
17
20
23
分享到:
评论

相关推荐

    Oracle通过正则表达式分割字符串 REGEXP_SUBSTR的代码详解

    string :需要进行正则处理的字符串 pattern :进行匹配的正则表达式 position :起始位置,从第几个字符开始正则表达式匹配(默认为1) occurrence :标识第几个匹配组,默认为1 modifier :模式(‘i’不区分大...

    plsql分割字符串

    通过对`FUNCTION_SF_SPLIT_STRING`的详细分析,我们可以看到,在PL/SQL中实现字符串分割不仅需要理解基本的字符串操作函数,还需要具备良好的逻辑思维和控制结构设计能力。掌握这种方法不仅可以提高数据库应用程序的...

    SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx

    为了解决这个问题,我们可以创建一个字符串分割函数,通过直接查询就能将分割后的结果转换成多行数据。 1. 创建字符串分割函数 首先,我们需要创建一个字符串分割函数,名为 `StringSplit`。这个函数将接受两个...

    oracle 存储过程中某入参是逗号分隔,并且参数要使用在in过滤语句中

    oracle存储过程中入参是逗号分隔,并且参数要使用在in过滤语句中查询数据。处理的方法与实现

    oracle sql 某列的值按照逗号分割显示成多行.sql

    oracle 某列存儲的值是有逗號的字符串,希望通過逗號分隔開來顯示多行。sql,有預期結果,有項目實戰。

    Oracle字段根据逗号分割查询数据的方法

    需求是表里的某个字段存储的值是以逗号分隔开来的,要求根据分隔的每一个值都能查出来数据,但是不能使用like查询。 数据是这样的: 查询的sql如下: select * from ( select guid, regexp_substr(st_responsible...

    oracle企业面试题集锦.pdf

    Oracle 中使用 || 这个符号连接字符串,如 ‘abc ’ || ‘d’。 八、Oracle 分区优化方法 Oracle 分区是将一个表分成多个更小的、独立的部分,以提高数据库的性能和可扩展性。 Oracle 分区可以按照不同的方式进行...

    ORACLE_正则表达式摘录笔记

    正则表达式可以用于检查字符串是否符合特定模式,进行字符串替换、分割等多种操作,提供了一种灵活且强大的字符串处理方式。 二、正则表达式相对于通配符的优势 1. 功能更加强大:正则表达式包含特殊字符和量词,能...

    Oracle8i_9i数据库基础

    - 用于在SQL*PLUS缓冲区中替换指定的字符串。 ##### 5.5 Append(追加字符串)命令 - 用于向SQL*PLUS缓冲区中追加文本。 ##### 5.6 Save保存当前缓冲区命令到文件 - `SAVE`命令用于将SQL*PLUS缓冲区中的内容保存到...

    Oracle的SQLPLUS命令的使用大全

    - **描述**:此命令允许用户自定义列的显示格式,如字符串宽度、数值格式等。 - **示例**: - `SQL&gt; COLUMN ENAME FORMAT A40` - `SQL&gt; SELECT EMPNO, ENAME, JOB FROM emp;` - 输出结果: ``` EMPNO ENAME JOB...

    oracle查询语句大全

    15. **添加回车符到字符串**: - `SELECT 'Welcome to visit'||CHR(10)||'www.CSDN.NET' FROM dual;` - 使用`CHR(10)`函数添加换行符。 16. **中文排序**: - 在Oracle 9i之前,中文排序基于二进制编码;9i之后...

    Oracle数据库正则表达式使用场景代码实例

    在Oracle中使用时,如果要匹配字符串中的连续数字,可以使用\d连写来表示多位数字,例如\d{11}用于匹配11位数字。需要注意的是,正则表达式中有些特殊字符(如点号.)有特定含义,如果要在表达式中匹配这些特殊字符...

    oralce企业面试集

    - Oracle使用`||`符号连接字符串,例如`'abc' || 'd'`。 8. **分区技术**: - 分区允许将大表划分为较小、更易管理的部分,提高查询性能。常见的分区策略有范围分区、列表分区、散列分区等。 9. **SQL优化技巧**...

    根据汉字自动生成助记码

    2. **字符串操作**:C#中的`System.String`类提供了丰富的字符串操作方法,如查找、替换、分割等,这些都是处理汉字和助记码时的常用工具。 3. **汉字结构分析**:汉字可以分为部首、笔画等组成部分。了解汉字的...

    数据库面试训练数据库面试训练数据库面试训练数据库面试训练数据库面试训练

    - **LOWER()**: 将字符串全部转换为小写。 - **UPPER()**: 将字符串全部转换为大写。 - **LTRIM()**: 删除字符串左边的空白字符。 - **RTRIM()**: 删除字符串右边的空白字符。 - **TRIM()**: 同时删除字符串左右两边...

    C#编程经验技巧宝典

    72 &lt;br&gt;0102 将字符串首字母转换大写 72 &lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72 &lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 &lt;br&gt;4.2 获取字符串信息 73 ...

    OraclePro*c编程(内部培训资料)

    `VARCHAR` 是一个变长字符串数据类型,在 Oracle 中用于存储可变长度的字符串。在 Pro*c 中使用时,需要声明为 `char` 类型,并在预编译时指定最大长度。 ##### 3.6.3 在什么情况下不使用 Pro*c/C++ 和 SQLLIB ...

    pro*c编译选项_中文解释

    超出此限制的字符串将被分割成多个常量,这可能会影响性能。 #### 15. maxopencursors 设置了同时打开的游标数量上限。超过这个数量,后续的游标打开请求将失败,这有助于防止资源耗尽。 #### 16. mode 定义了预...

Global site tag (gtag.js) - Google Analytics