DDLによる表とその関係の管理42 / 50 問

次のSQL文を実行しました。最後のSELECT文で、どのような結果が返されますか。

CREATE TABLE codes (
  c  CHAR(5),
  v  VARCHAR2(5)
);

INSERT INTO codes VALUES ('AB', 'AB');

SELECT LENGTH(c) AS len_c, LENGTH(v) AS len_v FROM codes;
ALEN_C:2、LEN_V:2
BLEN_C:5、LEN_V:2✓
CLEN_C:5、LEN_V:5
DLEN_C:2、LEN_V:5
正解:B解説

CHARは固定長の文字データ型です。指定したサイズより短い値を格納すると、右側が空白で埋められます。
一方、VARCHAR2は可変長のため、格納した値の長さのまま保持されます。
今回はCHAR(5)の列に'AB'を格納したため、'AB'の後ろに空白3文字が埋められて5文字になります。

SELECT LENGTH(c) AS len_c, LENGTH(v) AS len_v FROM codes;

LEN_C  LEN_V
------ ------
5      2

CHARとVARCHAR2の違い

データ型長さサイズ指定短い値を格納したとき
CHAR(n)固定長省略可能(省略時は1)右側を空白で埋める
VARCHAR2(n)可変長必須そのまま格納する

前後の問題