使用 oracle sql 以逗号分隔的字符串

Posted

技术标签:

【中文标题】使用 oracle sql 以逗号分隔的字符串【英文标题】:string splited by comma using oracle sql 【发布时间】:2016-04-10 12:43:23 【问题描述】:

如何使用 oracle sql 用逗号分割字符串? 在这里,我有一列具有如下值

123Lcq
Lf32i
jkp32m

我想用逗号分隔

1,2,3,L,c,q
L,f,3,2,i
j,k,p,3,2,m

【问题讨论】:

你的数据有多行字符串吗? Ronnie:你昨天发布了一个相关问题。收到答复后,您发表了以下评论:“非常感谢,这是我见过的最神奇的代码。令人惊叹的 Oracle 功能。但我使用 Netezza 作为我的数据库真是太可惜了。 – Ronnie Lu 18 小时前。”在后续评论中,我问您如果您不使用 Oracle,为什么该问题被标记为“Oracle”。现在我看到你发布了这个问题,也标记为“oracle”。请解释一下。 【参考方案1】:

你可以使用regexp_replace:

SELECT substr(regexp_replace(mycol, '(.)', ',\1'), 2)
FROM   mytable

正则表达式查找每个字符,然后这些匹配的字符都以逗号作为前缀。最后用一个简单的substr 去掉第一个逗号。

请注意,修剪逗号可以替代substr,但当原始值在字符串末尾已经有逗号时,行为会有所不同:修剪时,您还会修剪掉这些原始逗号。

【讨论】:

【参考方案2】:

您可以使用REGEXP_REPLACE 实现所需的输出:

SELECT
    rtrim(regexp_replace(text, '(.)', '\1,'), ',') result
FROM (
    SELECT '123Lcq' text FROM dual UNION ALL
    SELECT 'Lf32i'  text FROM dual UNION ALL
    SELECT 'jkp32m' text FROM dual)

【讨论】:

以上是关于使用 oracle sql 以逗号分隔的字符串的主要内容,如果未能解决你的问题,请参考以下文章

SQL拆分逗号分隔的字符串

sql 如何以逗号为分隔符分割一个字段的值

SQL中逗号分隔的查询结果转换成单个字符串放到in语句里

基于输入范围的排序逗号分隔字符串的 MAX/MIN 的 SQL 查询

如何根据一个字段是不是包含oracle sql中的逗号分隔字符串将单行拆分为多行?

在 Oracle SQL 中求和逗号分隔值