0

我正在尝试将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
              ),',','-'
            ),'-'
      )

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

4

3 回答 3

1

Rexexp_replace() regular expression function can come in handy in this situation as well:

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

Result:

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

SQLFiddle Demo

于 2013-08-28T06:09:41.813 回答
1

尝试这个

replace(substr(a.object_name,instr(a.object_name,',',1,1) + 1),',','-') ||'-'
于 2013-08-28T01:01:21.963 回答
0

我建议使用以下代码:

REPLACE(SUBSTRING(a.object_name,13,LEN(@object_name)-11),',','-') + '-'
于 2013-08-28T00:52:15.443 回答