アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラミング初心者です。
char型について質問です。

一般的にchar型とは文字列の定義という風に教えてもらったことがあるのですが、言語やデータベースによってchar型の定義は違うものなのでしょうか?

例えば、javaでは
  char a = 'あ'
というように、文字が全角一文字しか定義できないのに対して、SQLでテーブルを定義するときでは「長さ:10」というように文字を一文字以上格納できるので、大変疑問です。(この考え方が間違っているのでしょうか?)
SQLの「長さ」というのも具体的に何の長さなのか分かりません。

かなりの初心者と思われるでしょうが分かりやすい回答を頂きたく思います。
よろしくお願いします。

A 回答 (2件)

charは、Cとかjavaでは、一文字を表すデータ型で文字列ではありません。


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

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

お礼日時:2005/10/23 03:51

> 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文字以内)と理解した方がいいでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/23 03:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A