プログラミング初心者です。
char型について質問です。
一般的にchar型とは文字列の定義という風に教えてもらったことがあるのですが、言語やデータベースによってchar型の定義は違うものなのでしょうか?
例えば、javaでは
char a = 'あ'
というように、文字が全角一文字しか定義できないのに対して、SQLでテーブルを定義するときでは「長さ:10」というように文字を一文字以上格納できるので、大変疑問です。(この考え方が間違っているのでしょうか?)
SQLの「長さ」というのも具体的に何の長さなのか分かりません。
かなりの初心者と思われるでしょうが分かりやすい回答を頂きたく思います。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
charは、Cとかjavaでは、一文字を表すデータ型で文字列ではありません。
SQLで
char(10)
とか言う場合には、文字データ型(固定長)で10文字分の領域を確保するという意味です。
データベースに格納できるスペースを決めるために指定します。
Cなどの場合
char a[10];
とかとほぼ同じ意味です。
一般的には、char型というのは、言語によって変わります。
例えばCとjavaでは違いますね。
ご回答ありがとうございます。
javaでいうchar型とは文字列ではないんですね。
(一文字の場合はデータ型というのですね。)
char型が言語によって違うということを知って安心しました。というか納得しました^^;
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文字以内)と理解した方がいいでしょう。
ご回答ありがとうございます。
長さについてよく分かりました。
半角1文字で1バイトなのですね。
本当に初心者でなさけないのですが^^;
詳しい解説どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語の質問です、プログラミング初心者です このような文字列があった場合 "abcdef☆ghijk 4 2022/11/22 10:56
- C言語・C++・C# c言語 int temp = 0; if(isdigit(arr[i])){ temp=arr[i] 2 2022/03/27 01:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fstream型オブジェクトを関数の...
-
C言語のintとcharの違いってな...
-
文字列ポインタと配列の違いで...
-
char型にint型の数値を代入する。
-
しつこい様ですが、再度ポイン...
-
strtok
-
C言語で文字列置き換え
-
ポインタを使用 [数字列を数値...
-
C言語での構造体
-
入力された文字列の中の数字を...
-
char c = 'a'; char h[1] = c; ...
-
引数として二次元配列を利用す...
-
ASCIIコードへの変換方法
-
コマンドライン引数 *argv[]は...
-
CStringからchar*への型変換に...
-
WM_CHAR or WM_KEYDOWN の「wPa...
-
new charとnew char[N]の違いは?
-
char*型の文字列をchar[10]へ。
-
C言語にて構造体のメンバがNULL...
-
csvファイルをfscanfで読み込む...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
char*を初期化したいのですが
-
C言語のintとcharの違いってな...
-
CStringからchar*への型変換に...
-
C言語にて構造体のメンバがNULL...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
strcat関数を自作したいです
-
fstream型オブジェクトを関数の...
-
new charとnew char[N]の違いは?
-
DWORDとcharの変換
-
文字列の途中から途中までを抽出
-
char 文字列型 の表現範囲が-12...
-
const char* s1とただのchar s1...
-
wsprintf( ポインタ , "%d" , "...
-
c言語でポインタ変数を用いた配...
-
char型にint型の数値を代入する。
-
C言語で文字列をかえす正しい書...
-
C++17で、unsigned char * 配列...
-
共用体について
-
エクセルのMID関数は、C言語では?
おすすめ情報