- ベストアンサー
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 とでます。 なぜだか理解できません。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Oracleですね。 LENGTH関数は「文字数」を返すものです。 で、Char型は固定長なので、Char(10)と宣言をすると 10バイトの容量を確保し、不足分は半角スペースで埋めます。 なので、「株式会社」は内部では 株式会社 + 半角スペース 2つ なので、4文字+2文字で6文字 「漢字漢字漢」は10バイトぎりぎりまで使っているので5文字であると返却されます。 Varchar2型で宣言すれば、実際の文字数通り返却されます。 あと、バイト数を返却したいのであればLENGTHB関数を使えばよいです。 その場合、両方10が返却されます。
お礼
たいへんわかりやすい説明文でした。 ありがとうございました。