molog

アクセスカウンタ

zoom RSS 桁数の多い数値を取得する[php,Oracle,SQL*Plus]

<<   作成日時 : 2010/01/20 23:12   >>

トラックバック 0 / コメント 0

DBから13桁の数値を取得して、PHPで表示しようとした際に
なぜか全く関係のない「2147483647」という数値がずらりと表示されました。

原因はPHPのinteger型の最大値以上の数値を取得しようとしていたためでした。


解決策として、以下のようにSQLで文字列として取得しました。
(表示するだけだったので..)
SQL> SELECT TO_CHAR(1234567890123) FROM DUAL;



これに関連して。
SQL*Plusでは、NUMBER型の列の表示文字数は
デフォルトで10桁となっています。
10桁以上の数値の場合は指数表記となります。

SQL> SELECT 1234567890123 FROM DUAL;

1234567890123
-------------
1.2346E+12


これを指数表記にしたくない時はNUMWIDTHを変更します。

SQL> SHOW NUMWIDTH
numwidth 10
SQL> SET NUMWIDTH 13
SQL> SELECT 1234567890123 FROM DUAL;

1234567890123
-------------
1234567890123


ちなみにNUMWIDTHの範囲は2から50までで
NUMBER型の桁数が一括で変更されるようです。


参考:SQL*Plusオプション一覧

テーマ

関連テーマ 一覧


月別リンク

桁数の多い数値を取得する[php,Oracle,SQL*Plus] molog/BIGLOBEウェブリブログ
文字サイズ:       閉じる