人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQLでのデータ型について質問です。
オラクル環境でNVL関数を使っているのですが、
SELECT NVL(項目名,1) FROM テーブル名
という抽出をvarchar型の3桁の項目に行った場合、
NULLの場合は1がセットされると思うのですが、3桁の項目なので[001]とセットされるのでしょうか?
それとも「△△1」(△=スペース)とセットされるのでしょうか?

また、number項目であった場合も3桁の項目に対し1桁の値がセットされる場合、
自動的に前2桁には[00]がセットされるのでしょうか?

上記のような、varchar型やnumber型にフル桁でない情報がセットされる場合、
どのような値として保持するか、ということが知りたいです。

できればITproなど公式的なリファレンスに載っているサイトなど(文献でもページを教えてくだされば可)を教えてください。

よろしくお願いいたします。

●質問者: sixoranges
●カテゴリ:コンピュータ 書籍・音楽・映画
✍キーワード:00 ITpro Number SELECT SQL
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● kn1967
●60ポイント

(基本)

CHAR型は固定長のため3桁としてあれば不足分を空白で埋めてくれるが、

VARCHAR型は可変長のため3桁としてあっても、中身が1桁なら1桁となる。

(例1)

項目名 が VARCHAR型で、中身が[1]であるとして、

受け側もVARCHAR型であるならば、勝手に[ 1]などとはならず[1]が入り、

受け側がCHAR型の場合は空白で補完され[ 1]が入る。

(例2)

項目名が NUMBER型、中身が[1]であるとして、

カラムには値が入っているだけであって、書式を保持する項目は無いため、

[001]などとしたいのであれば、TO_CHAR関数等で明示的に変換する必要がある。

(関係資料)Oracle Database SQL言語リファレンス

NVL

http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/f...

NVL2

http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/f...

Oracleの組込みデータ型

http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/s...

データ型の暗黙的変換

http://download.oracle.com/docs/cd/E16338_01/server.112/b56299/s...

(余談)

フォーマットについては、ORACLE側ではなくフロントエンドのプログラムのほうで、

別途フォーマットするほうが良い場合もあるため、システム設計の段階で、

どちらで行うべきかを考慮して、SQLを組まないといけませんね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ