2012-05-09 8 views
1

私はどのようにそれは

node_id 
0 
2000 
300300300 
400400400 

は、私は何を取得しようとしていますが、文字列の中に、この番号を変換して追加され、数、列NODE_IDを持つテーブルを持ってフォーマットするとともに、数にゼロを付加するための「 - 」右から3桁ごとに ので、予想される出力は私が取得しています出力は、

node_id 
0 
2-000 
300-300-300 
400-400-400 

である私の問題は、私はとも必要である

select TO_CHAR(lpad(t1.node_id,9,'0'), '999G999G999', 'NLS_NUMERIC_CHARACTERS="-"'), node_id from table t1; 

、これは私が使用しているクエリで、

node_id 
000-000-000 
000-002-000 
300-300-300 
400-400-400 

です各レコードの先頭に「0」を付けて、全長が11になるようにします。 lpadの出力をvarcharに変換するために、すぐにlpadの周りにto_charを追加しましたが、t彼は同じ出力。

答えて

3

だけにあなたの書式マスクを変更します。任意のデータベースで動作する前に付ける0のための代替のようなものです(先頭の '0' に注意してください)

'099G999G999' 

+0

wow..that simple! :) ありがとうございました – Kshitij

0

を:

right('000000000000' || cast(<val> to varchar(100)), <numdigits>) 

もちろん、一部のデータベースでは、 "||"ではなく "concat()"または "+"連結のために。

関連する問題