Home > DB / SQL Archive
DB / SQL Archive
Oracleのキャラセット確認
- 2007-05-23 (水)
- DB / SQL
Oracleのキャラクタセットの確認方法をメモ。
下記のSQLを実行。
SELECT VALUE
FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER=’NLS_CHARACTERSET’;
実行例。
↓
VALUE
——
UTF8
(2007/05/27修正:「文字コード」ではない)
- Comments: 0
- Trackbacks: 0
SELECT文を1画面ごとに一時停止させる
- 2007-05-15 (火)
- DB / SQL
■”SET PAUSE ON”
ユーザがEnterを押すまで画面表示が止まる
■”SET PAUSE OFF”
一気に結果を表示(SQL*PLUSのデフォルト)
■”SET PAUSE (表示したいメッセージ)”
一時停止と同時にメッセージを表示
例)”SET PAUSE Enterを押して下さい”
- Comments: 0
- Trackbacks: 0
[SQL*PLUS]NUMBER型の値を取得→桁落ち?
- 2007-03-25 (日)
- DB / SQL
先日、SQL*PLUSを使って、DB(Oracle 9i)からNUMBER型の値を取得しようとしていました。
それもかなり大量のレコード。
データが多いせいで最初は判らなかったのですが、いくつかのレコードが桁落ち?している事が発覚。
例えば。
“HOGE_TABLE”という表に、“HOGE_NUMBER”というNUMBER型カラムがあって、以下の値が格納されているとします。
・123456789
・1234567890
・12345678909
これを取得します。
【SQLコマンド】
SQL> SELECT HOGE_NUBER FROM HOGE_TABLE;
【SQL結果】
HOGE_NUMBER
—————
123456789
1234567890
1234567890
3つ目のレコードが正常に取得できてません(汗
それも落ちてる桁が「9」なので、桁落ちにしても変です(多汗
原因は。。。
SQL*PLUSの「設定」の問題でした。
サイズ(桁)が設定されていないNUMBER型カラムの場合、SQL*PLUSのデフォルト設定では「最大10桁(バイト)まで」を取得して表示するようになっているとの事。
その設定は、「SHOW numwidth」で確認できます。
(確認したらやはり”numwidth 10″でした)
これを変更するには、以下のコマンドを入力します。
SET numw [バイト数]
先ほどの例で言うと、「SET numw 12」と設定しておけば12バイトまで表示されるので解決できた訳です。
【SQLコマンド】
SQL> SET numw 12
SQL> SELECT HOGE_NUBER FROM HOGE_TABLE;
【SQL結果】
HOGE_NUMBER
—————
123456789
1234567890
12345678909
更に言えば、このテーブルを作る時にきちんとNUMBER型の最大サイズを定義しておけば発生しない問題だったんですねw
「サイズ未定義のNUMBER型カラム」から値を取得する場合は気を付けましょう。
- Comments: 0
- Trackbacks: 0
Home > DB / SQL Archive
- Search
- Feeds
- Meta