• ベストアンサー

char型について【初心者です】

プログラミング初心者です。 char型について質問です。 一般的にchar型とは文字列の定義という風に教えてもらったことがあるのですが、言語やデータベースによってchar型の定義は違うものなのでしょうか? 例えば、javaでは   char a = 'あ' というように、文字が全角一文字しか定義できないのに対して、SQLでテーブルを定義するときでは「長さ:10」というように文字を一文字以上格納できるので、大変疑問です。(この考え方が間違っているのでしょうか?) SQLの「長さ」というのも具体的に何の長さなのか分かりません。 かなりの初心者と思われるでしょうが分かりやすい回答を頂きたく思います。 よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

charは、Cとかjavaでは、一文字を表すデータ型で文字列ではありません。 SQLで char(10) とか言う場合には、文字データ型(固定長)で10文字分の領域を確保するという意味です。 データベースに格納できるスペースを決めるために指定します。 Cなどの場合 char a[10]; とかとほぼ同じ意味です。 一般的には、char型というのは、言語によって変わります。 例えばCとjavaでは違いますね。

chaozux
質問者

お礼

ご回答ありがとうございます。 javaでいうchar型とは文字列ではないんですね。 (一文字の場合はデータ型というのですね。) char型が言語によって違うということを知って安心しました。というか納得しました^^;

その他の回答 (1)

回答No.2

> 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文字以内)と理解した方がいいでしょう。

chaozux
質問者

お礼

ご回答ありがとうございます。 長さについてよく分かりました。 半角1文字で1バイトなのですね。 本当に初心者でなさけないのですが^^; 詳しい解説どうもありがとうございました。

関連するQ&A

専門家に質問してみよう