`

查询oracle 中逗号分隔字符串中所有值

 
阅读更多
如果一个字符串中有像逗号或其它符号分隔,你想把它折分成列,如’first field, second field , third field’,

拆成

first field

second field

third field

第一种 用10G开始支持的正则表达式

SELECT REGEXP_SUBSTR (‘first field, second field , third field’, ‘[^,]+’, 1,rownum)
FROM DUAL
CONNECT BY ROWNUM <=
LENGTH (‘first field, second field , third field’) – LENGTH (REPLACE (‘first field, second field , third field’, ‘,’, ”))
+1

————

first field
second field
third field

REGEXP_SUBSTR 函数是把那个串以正则不是以,(逗号)开头的截取,第二个参数是取第几组,rownum伪列序号,connect 循环 ,循环次数为串总长度-去除分隔符后=几个分隔符 +1

第二种用type,function
第一,先创建一个Type

CREATE OR REPLACE TYPE type_split IS TABLE OF VARCHAR2 (4000)

第二,创建函数

create or replace function split(p_list varchar2,p_sep varchar2 := ’,’)
return type_split pipelined
IS
l_idx pls_integer;
v_list varchar2(50) := p_list;
begin
loop
l_idx := instr(v_list,p_sep);
if l_idx > 0 then
pipe row(substr(v_list,1,l_idx-1));
v_list := substr(v_list,l_idx+length(p_sep));
else
pipe row(v_list);
exit;
end if;
end loop;
end split;

第三,调试

select * from table(split(’aaa,bbb,ccc’,’,’))

扩展 regexp_replace

V字段中每个值中字符串以,分隔,如果不是以9开头那组串加‘00’

anbob@NCME>create table testreg(v varchar2(80));
Table created.
anbob@NCME>insert into testreg values(’911,000,12,31′);
1 row created.

anbob@NCME>insert into testreg values(’11911,554000,312,931′);
1 row created.

anbob@NCME>commit;
Commit complete.

anbob@NCME>select ltrim(regexp_replace(‘,’||v,’([,])’,'\100′),’,') newv,v from testreg;

NEWV V
—————————— ——————————
00911,00000,0012,0031 911,000,12,31
0011911,00554000,00312,00931 11911,554000,312,931
分享到:
评论

相关推荐

    oracle 关于字符串中带有逗号间隔的查询.doc

    在Oracle数据库中,进行字符串查询时,特别是当字符串中包含逗号等特殊字符时,我们需要巧妙地使用SQL的LIKE操作符来实现精确匹配。这里,我们面对的问题是想要查询DWDH字段中含有"飞信"但不包含"移动飞信"或"飞信...

    Oracle拆分字符串,字符串分割的函数

    `instr()` 是Oracle中的一个内建函数,它用于查找子串在目标字符串中的位置。例如,`instr(string, substring)` 返回`substring`在`string`中第一次出现的位置。虽然这不是直接的字符串分割函数,但可以配合其他...

    oracle中操作字符串

    本文将详细介绍如何利用Oracle内置函数来实现从含有逗号和冒号的字符串中提取特定部分的功能。 #### 1. 使用REGEXP_SUBSTR函数 `REGEXP_SUBSTR`函数是Oracle提供的一种强大的工具,用于从文本字符串中提取匹配正则...

    Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法

    例如,遍历一个游标并添加每个记录的值到一个字符串中。 6. **XMLAGG() 函数**: 虽然主要设计用于XML处理,但`XMLAGG()`也可用于字符串连接。它返回一个XML串,可以进一步转换为纯文本: ```sql SELECT ...

    oracle将以逗号分隔字符串转多行

    Oracle的`REGEXP_SUBSTR`函数用于从字符串中提取符合正则表达式模式的部分。在这个例子中,`[^,]+`是一个正则表达式,表示匹配任何非逗号字符的一个或多个实例。参数`1, LEVEL`是指从字符串的第1个字符开始,按层级...

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

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

    截取用,分割的字符串中的第n个字符串 SQL

    根据给定的信息,本文将详细解释如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串。此需求通常应用于数据处理与分析场景中,尤其在处理半结构化或非结构化的文本数据时非常有用。 ### 核心知识点解析 ...

    Oracle 分割字符串 返回多行数据

    Oracle 分割字符串 返回多行数据

    oracle分隔字符串函数

    本文详细介绍了如何在 Oracle 数据库中实现字符串分隔的功能,通过自定义函数 `splitstr` 实现了根据用户定义的分隔符来分割字符串的目标。这种方法不仅灵活,而且易于维护和扩展,非常适合于处理各种复杂的字符串...

    Oracle 两个逗号分割的字符串,获取交集、差集(sql实现过程解析)

    它根据正则表达式`[^,]+`(表示非逗号的任何字符的一个或多个连续序列)来分割字符串,返回符合条件的部分。`REGEXP_REPLACE`函数虽然在此案例中未被直接使用,但它也是一个重要的正则表达式处理函数,可以用于替换...

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

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

    一个oracle根据特定字符截取数据

    假设我们有一个名为 `data_column` 的列,其中包含以逗号分隔的数据,如 'value1,value2,value3',我们可以使用以下SQL语句来获取第一个值: ```sql SELECT SUBSTR(data_column, 1, INSTR(data_column, ',', 1) -...

    oracle中字符串截取

    `INSTR`函数用于查找一个字符串在另一个字符串中的位置,其基本语法格式为: ```sql INSTR(source_string, search_string, start_position, occurrence) ``` - **source_string**:源字符串。 - **search_string**...

    oracle查询表的所有列并用逗号隔开

    在Oracle数据库环境中,有时我们需要获取一个表的所有列名,并且以特定格式(如逗号分隔)输出这些列名。这种需求通常出现在多种场景中,比如动态SQL构建、数据迁移或者系统日志记录等。本篇文章将详细介绍如何在...

    Oracle中字符串截取常用方法总结【推荐】

    `substr`函数用于从给定的字符串中截取一部分。其基本语法如下: ```sql SUBSTR(string, start, [length]) ``` - `string`:源字符串,即你要截取的部分。 - `start`:开始位置,从1开始计算。如果`start`为负数,...

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

    在Oracle数据库中,有时我们遇到一个特殊的查询需求,即字段中的值是以逗号分隔的字符串,我们需要根据每个单独的值来查询数据。在这种情况下,简单的`LIKE`查询无法满足需求,因为`LIKE`通常用于匹配模式,而不是...

    oracle实现行转列功能,并使用逗号进行隔开拼接,成为一条数据.pdf

    这个示例代码将 bp_marking 表中的 sfc_no 字段与对应的所有 mark_operation_id 字段合并成一个字符串,并用逗号分隔每个字段的值。 如果需要去重,可以使用 DISTINCT 关键字,示例代码如下: ```sql SELECT sfc_no...

    plsql中的字符串分割.txt

    2. **使用`CONNECT BY`语法**:利用`CONNECT BY`语法来递归地处理字符串,从而提取每个由逗号分隔的数字序列。 3. **使用`INSTR`函数**:通过`INSTR`函数来定位分隔符(逗号)的位置,进而提取每个子字符串。 4. **...

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

    `@separator`,即字符串中拆分符。函数返回一个临时表 `@temp`,其中包含分割后的结果。 ```sql CREATE FUNCTION [dbo].[StringSplit] ( @ttstring NVARCHAR(MAX), @separator CHAR ) RETURNS @temp TABLE ...

Global site tag (gtag.js) - Google Analytics