アクセスカウンタ

zoom RSS テーマ「sql」のブログ記事

みんなの「sql」ブログ


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

2010/01/20 23:12
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オプション一覧

記事へトラックバック / コメント


DATE型のフィールドをupdate [ oracle ]

2008/05/14 22:32
すぐに「to_charってなんだっけ・・・・・・・」となってしまうのでメモ。

DATE型をupdateやinsertをするときは、to_date()関数で文字列を日付に変換する。
DATE型のフィールドに条件をつけるときは、to_char()関数で日付 を日付書式 の文字列に変換する。

こんなかんじ↓

update
[テーブル名]
set
[DATE型のフィールド名] = to_date('2008/05/10 15:00:00','YYYY.MM.DD HH24:MI:SS')
where
to_char([DATE型のフィールド名],'YYYY/MM/DD') = '2008/05/14'



これはダメなんだって・・↓

where [DATE型のフィールド名] like '2008/05/14%'
記事へトラックバック / コメント


トップへ | みんなの「sql」ブログ

molog sqlのテーマ/BIGLOBEウェブリブログ
文字サイズ:       閉じる