1

9999999999のVARCHAR形式の列を9-999-99999-9として表示しようとしています。TO_CHARとTO_NUMBERが機能しないことはわかっています。また、これを行うためにSUBSTRを使用することになっていることもわかっています。

次のように、複数のSUBSTR関数を1つの列として一緒に使用できれば、これを実行できると思います。

SELECT SUBSTR(column、0、1)-SUBSTR(column、1、3)などですが、どちらも機能しません。

どんなガイダンスも大歓迎です。

4

6 に答える 6

6

正規表現の検索と置換を使用できます

select regexp_replace('9999999999','(.)(...)(.....)(.)','\1-\2-\3-\4') from dual;
于 2012-08-19T21:04:57.417 に答える
4

SUBSTR関数と Oracle 文字列連結演算子の組み合わせを使用できるはずです||

SELECT    SUBSTR(column, 1, 1)
          || '-'
          || SUBSTR(column, 2, 3)
          || '-'
          || SUBSTR(column, 4, 5)
          || '-'
          || SUBSTR(column, 9, 1)
于 2012-08-19T20:57:21.533 に答える
3

to_charを使用するのが実際には最良のオプションだと思います。必要なのは、フォーマット モデルを慎重に使用することだけです。

これで十分ですが、毎回新しいクエリを作成することなく、非常に簡単に拡張できます。

select replace(to_char( 999999999,'9,99,99999,9'),',','-') from dual

デモ用に小さなSQL Fiddleを作成しました。

于 2012-08-19T21:37:21.210 に答える
0
SELECT SUBSTR(9999999999,1,1) || 
       '-' ||
       SUBSTR(9999999999,2,3) ||
       '-' ||
       SUBSTR(9999999999,4,5) ||
       '-' ||
       SUBSTR(9999999999,10,1) FROM DUAL;
于 2012-08-20T07:24:44.383 に答える