我有一个这样的问题

 SELECT REGEXP_SUBSTR('SARAH;10,JOE;1D,KANE;1A,SDF:1a', '[^,;]+', 1, level)
   FROM dual
CONNECT BY REGEXP_SUBSTR('SARAH;10,JOE;1D,KANE;1A,SDF:1a',
                         '[^,;]+',
                         1,
                         level) IS NOT NULL;

我想把o/p定为SARAH,JOE,KANE,SDF

推荐答案

如果只有一行数据,那么可以使用

WITH t(str) AS
(
 SELECT 'SARAH;10,JOE;1D,KANE;1A,SDF:1a' FROM dual
), t2 AS
(
 SELECT level AS lvl, REGEXP_SUBSTR(str, '[^,;:]+', 1, level) AS str
   FROM t
 CONNECT BY REGEXP_SUBSTR(str,
                          '[^,;]+',
                          1,
                          level) IS NOT NULL
)
SELECT LISTAGG(str,',') WITHIN GROUP (ORDER BY lvl) AS result
  FROM t2  
 WHERE NOT REGEXP_LIKE(str,'^(\d)')                         

为了过滤提取的子串,通过使用上面的REGEXP_LIKE()来过滤不是以整数开头的子串

Sql相关问答推荐

Postgresql -如何计算刷卡和刷卡时间

如何在一个范围内进行分组.""范围值在范围表中定义

如何使用ROW_NUM() Select 一个没有第二条记录的实例?

如何利用单列历史SQLsnowflake获得合并结果

如何在PostgreSQL中的一列中添加两个文本?

使用列表作为参数进行 Select ,如果为空,则在PostgreSQL中不使用参数进行 Select

SQL递归.硬币兑换问题.-try 使用递归解决硬币找零问题

在WHERE EXISTS子查询中,列返回是否重要?

聚合内部的条件在哪里?

如何根据 SQL 中的阈值标记一个集群中的所有值?

在 postgres 中插入或更新 jsonb 数组的对象

PostgreSQL-用第一个非空填充以前的值

PostgreSQL如何将Unix纪元时间戳转换为日期时间并进行拼接

自动生成计算频率的列

使用对 nvarchar 列的多个 LIKE 操作优化 SQL 查询

如何防止 SQL 中的负收入值并将其重新分配到接下来的月份?

SQL - 使用子查询返回多行的 LIKE 命令

在时态表和非时态表之间使用 EXCEPT 的 SQL 子查询给出表达式错误数

如何根据时间在 MongoDB Compass 中分组?

关于oracle sql中的数据透视表