質問: 'あ' というように、文字が全角一文字しか定義できないのに対して、sqlでテーブルを定義するときでは「長さ:10」というように文字を一文字以上格納できるので、大変疑問です。(この考え方が間違っているのでしょうか?) sqlの「長さ」というのも具体的に何の長さなのか分かりません。 かなりの初心者と思われるでしょうが分かりやすい回答を頂きたく思います。 よろしくお願いします。
回答: > sqlの「長さ」というのも具体的に何の長さなのか分かりません。 これは「character length」が元の言葉で、適当な日本語訳を思いつかないので単に「長さ」とか「サイズ」と表現しているのです。sqlに限らず、どの言語でも同じです。 「長さ」の単位はバイト(8ビット)で考えるのが原則なので、「char(10)は10文字分の領域」という説明は誤りで、「char(10)は10バイトの文字領域」が正解です。 なお文字の長さを決める規準尺度は以下によります。 半角1文字⇒1バイト 全角1文字⇒2バイト euc文字⇒3バイト ゆえにchar(10)は「全角半角とり混ぜて10バイト以内」と説明できます。 (この中にeucコードを混入することはまずありません) char(10); と記述した時点では、どのような文字種が書き込まれるか不明なので、「10バイト」(全角換算で5文字以内)と理解した方がいいでしょう。