1

数値として列node_idを持つテーブルがあります。ここで、

node_id
0
2000
300300300
400400400

私が取得しようとしているのは、この数値を文字列に変換し、右から3桁ごとに「-」を追加することです。したがって、期待される出力は、

node_id
000-000-000
000-002-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
0
2-000
300-300-300
400-400-400

私の問題は、全長が11になるように各レコードの前に「0」を付ける必要があることです。lpadの出力をvarcharに変換するために、lpadのすぐ周りにto_charを追加しようとしましたが、同じ出力が得られます。

4

2 に答える 2

3

フォーマットマスクを次のように変更するだけです。

'099G999G999'

(先頭の「0」に注意してください)

于 2012-05-09T11:49:24.967 に答える
0

任意のデータベースで機能する0を前に付ける代わりの方法は、次のようなものです。

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

もちろん、一部のデータベースでは、「||」の代わりに「concat()」または「+」を使用します。連結用。

于 2012-05-09T14:30:11.337 に答える