0

番号だけを入れ替えて残りの部分を残しておく必要があります。例:

34HUNTAVE ==> 34THHUNTAVE

1232432GRACE ST ==> 1232432NDGRACE ST

1232433GRACE ST ==> 1232433RDGRACE ST

問題は、ジュリアン形式が多数でエラーを出していることです。どうすればそれを機能させることができますか。

   Does Not Work
    ------------
        SELECT REGEXP_REPLACE ('10425222GRACEST','[[:digit:]]+', 
         TO_CHAR (TO_DATE (REGEXP_REPLACE ('10425222GRACEST','[^[:digit:]]'),'J'),'fmJTH')) FROM dual;

     Works Fine
    ----------
         SELECT REGEXP_REPLACE ('10425BCST','[[:digit:]]+', 
         TO_CHAR (TO_DATE (REGEXP_REPLACE ('10425BCST','[^[:digit:]]'),'J'),'fmJTH')) FROM dual;
4

1 に答える 1

2
select 
  string,
  regexp_substr(string, '^\D*\d+') ||
  regexp_substr(to_char(to_date(
    regexp_replace(string, '^\D*\d*?(\d{1,3})(\D|$).*$', '100\1'), 
    'J'), 'fmjth'), '\D*$') ||
  regexp_replace(string, '^\D*\d+(.*)$', '\1') as new_string
FROM your_table

フィドル

于 2013-03-12T04:05:05.317 に答える