• ベストアンサー

SQL文のLengthについて

CREATE TABLE MM(NAME CHAR(10)); で作ったテーブルがあります。 インサート文('株式会社'); とデータを入力し、 SELECT NAME , LENGTH(NAME) FROM MM; とセレクトすると LENGTH(NAME)=6 とでます。 また インサート文('漢字漢字漢'); と入力し、 SELECT NAME , LENGTH(NAME) FROM MM; とセレクトすると LENGTH(NAME)=5 とでます。 なぜだか理解できません。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

Oracleですね。 LENGTH関数は「文字数」を返すものです。 で、Char型は固定長なので、Char(10)と宣言をすると 10バイトの容量を確保し、不足分は半角スペースで埋めます。 なので、「株式会社」は内部では 株式会社 + 半角スペース 2つ なので、4文字+2文字で6文字 「漢字漢字漢」は10バイトぎりぎりまで使っているので5文字であると返却されます。 Varchar2型で宣言すれば、実際の文字数通り返却されます。 あと、バイト数を返却したいのであればLENGTHB関数を使えばよいです。 その場合、両方10が返却されます。

fm0606
質問者

お礼

たいへんわかりやすい説明文でした。 ありがとうございました。