SQLでのデータ型について質問です。

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

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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/02/04 22:05:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント60pt

(基本)

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を組まないといけませんね。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません