使用SQL解析和连接字符串的最佳方法

时间:2013-08-28 00:25:08

标签: sql oracle11g

我正在尝试将object_type,ABC,00,DEF,XY字符串转换为ABC-00-DEF-XY-

这就是我所拥有的,我想知道是否有更有效的方式?

CONCAT(
     REPLACE(
        SUBSTR(a.object_name, 
               INSTR(a.object_name, ',',1,1)+1, 
               INSTR(a.object_name, ',',1,2)+1
              ),',','-'
            ),'-'
      )

澄清:我需要删除所有内容,包括第一个逗号,用破折号替换所有剩余的逗号,然后在末尾添加一个破折号。

3 个答案:

答案 0 :(得分:1)

试试这个

replace(substr(a.object_name,instr(a.object_name,',',1,1) + 1),',','-') ||'-'

答案 1 :(得分:1)

在这种情况下,

Rexexp_replace()正则表达式函数也可以派上用场:

select ltrim(
             regexp_replace( col
                           , '([^,]+)|,([^,]+)', '\2-'
                            )
             , '-'
             ) as res
 from t1

结果:

RES
--------------
ABC-00-DEF-XY-

SQLFiddle Demo

答案 2 :(得分:0)

我建议使用以下代码:

REPLACE(SUBSTRING(a.object_name,13,LEN(@object_name)-11),',','-') + '-'
相关问题