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

これを試して

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

Rexexp_replace()正規表現関数は、この状況でも役立ちます。

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

結果:

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

SQLFiddle デモ

于 2013-08-28T06:09:41.813 に答える
0

次のコードを使用することをお勧めします。

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