X
number format elementはto_number
で使用され、to_char
ではconverting hexadecimal numbers to decimal numbersとなっています。オラクルナンバーフォーマットモデル最大長
数値書式モデルの最大長は63文字ですが、the docsに記載されている制限は見つかりません。例えば。
datetime形式モデルの全長は22文字を超えることはできません。 63個の
X
ESに
:それは私の現在のタスクに関連しているとして、私は唯一のX
書式要素を試してみました
SQL> select to_number('A', rpad('X', 64, 'X')) from dual;
select to_number('A', rpad('X', 64, 'X')) from dual
*
ERROR at line 1:
ORA-01481: invalid number format model
:64個のX
ESに
SQL> select to_number('A', rpad('X', 63, 'X')) from dual;
TO_NUMBER('A',RPAD('X',63,'X'))
-------------------------------
10
。
質問:
- これはただの文書から欠落している知られている数値書式モデルの制限ですか?
- 64桁(またはそれ以上)の桁の16進数を10進数に変換するにはどうすればよいですか?
このような変換の目的は何ですか?数値で算術演算を行うか、単に保存して表示しますか? – ThinkJet
@ThinkJetこれは、90年代半ば以降に実行されていた第三者レガシーハードウェアデバイスからのデータ読み込みです。新しいバージョンでは、これらのより大きい16進数フィールドが導入されました。それはいつも行われていたので変換が行われました - 誰もここに誰もいない理由は分かりません。ほこりの多いコーナーを掃除した後、私たちは最終的なシステムがこの特定のパフォーマンス指標を使用することはないことを認識しました。また、インジケータの目的がある時点で変更され、別々にデコードする必要のある複数のセグメントが含まれているように見えますが、誰も私たちに語っていません。ああ、メンテナンスプログラマーの喜び! – user272735
私はあなたにメンテナンスの問題について共感します。後でこのインジケータを再度満たす場合は、['rawtohex'](http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions131.htm)と[' hextoraw']( http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions131.htm)変換および['UTL_RAW']関数(http://docs.oracle.com/cd/B28359_01/appdev .111/b28419/u_raw.htm)パッケージを使用して特定の読み取り値を抽出し、ビットレベルの操作を実行します。 – ThinkJet