
os:ターボlinuxです。
varchar属性にvarchar(10)と指定すると10文字入ると思っていたのですが、全角で入力すると5文字、半角で10文字でした。
マニュアル6.2のカラム型によると、
M の範囲は 0 〜 255 文字とあります。
TINYBLOB , TINYTEXT は最大長が 255(2^8 - 1)文字
BLOB , TEXTは 最大長が 65535(2^16 - 1)文字
MEDIUMBLOB , MEDIUMTEXTは 最大長が 16777215(2^24 - 1)文字
そして
LONGBLOB , LONGTEXT は最大長が 4294967295 または 4G(2^32 - 1)バイト
となっています。
LONGだけが「バイト」という表現、それ以外はvarcharも含めて文字数という表現なので、当然文字数でカウントしていると思っていたので完全に計算が狂いました。
これはマニュアルが間違えているのでしょうか?
それとも、文字コードによって変わるのでしょうか?
その場合、どの文字コードがバイト換算でどの文字コードが文字数換算なのでしょうか?
また、MySQLでどの文字コードが使用されているかどこを見れば分かるのですか?
となたかご教授下さい。

No.2ベストアンサー
- 回答日時:
>百歩譲って間違いではないとしても、著しく不備があるとは言えますね。
翻訳されたものなら仕方ないと思います。でも、確かに少しくらい注釈が有った方が親切かもしれませんね。
>これは使用する文字コードによって変わるのでしょうか?
>その場合、どの文字コードがバイト換算でどの文字コードが文字数換算なのでしょうか?
同じ文字コード内でも文字によって必要とされるバイト数が違いますから、マニュアルで文字単位で記されている物をバイトで考えた方がいいと思います。
255文字→255バイト
MySQLでの文字コード確認方法はこちら。
http://www.javadrive.jp/mysql/control/index1.html
参考URLは文字コードについてのページです。
参考URL:http://ash.jp/code/code.htm
この回答への補足
>翻訳されたものなら仕方ないと思います。でも、確かに少しくらい注釈が有った方が親切かもしれませんね。
念の為にen版を見てみました。
英語は解らないですけどlengthという表現しか用いていないので完全に誤訳ですね。
The length can be any value from 0 to 255.
「長さは0から255の範囲を如何様(いかよう)にも指定可能」
と直訳すれば良かったのですが、
「範囲は 0 ~ 255 文字」
と誤った意訳をしたみたいですね。
翻訳はコンピュータ知識のない人がする場合もありますから、コンピュータ知識のある人が指摘してあげないといけませんね。
「タダのものだから仕方ない」とスルーする気持ちが訂正するチャンスを奪っているのでしょうね。。
それはさておき、
>参考URLは文字コードについてのページです。
ありがとうございました。
ServerとClientの文字セットを確認するとlatin1(西欧)でした。
Server characterset: latin1
Client characterset: latin1
これを
Server characterset: sjis
Client characterset: sjis
にしたり
Server characterset: ujis
Client characterset: ujis
にしたりして
create table tb1 (it1 varchar(4));
insert into tb1 values ( 'ああああ' );
select * from tb1;
を試しましたが、いずれも結果は
+------+
| it1 |
+------+
| ああ |
+------+
でした。
文字セットとは無関係に常にvarchar(M) の M=バイト数みたいですね。。

No.1
- 回答日時:
文字数というのは、半角文字(1バイト文字)を基本に考えて解説がされていると思います。
マニュアルに間違いは無いと思います。日本語を使うのであれば、倍の領域を確保することを考えてデータベースを作らないといけません。
参考URL:http://www.pc-view.net/Help/manual/0082.html
この回答への補足
1バイト=1文字という狭義的な解釈に対し何の注釈も振ってないこと自体、マニュアルの不具合ですね。
それに、既に書いたようにLONGだけが「バイト」という表現、それ以外はvarcharも含めて「文字数」という表現であることからさらに解釈を難解にしている。
もはやこれは間違いと言っても過言ではないです。
百歩譲って間違いではないとしても、著しく不備があるとは言えますね。
間違い間違いでないの話は、これで終わりとして、
これは使用する文字コードによって変わるのでしょうか?
その場合、どの文字コードがバイト換算でどの文字コードが文字数換算なのでしょうか?
また、MySQLでどの文字コードが使用されているかどこを見れば分かるのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
COBOLのCOMP形式について
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
日付時刻を4バイトに
-
VB.NET LeftBの代用
-
文字コードの利点・欠点について
-
「1TB」のHDDに日本語は何字入...
-
VBSでテキストファイルの文字列...
-
ホームページビルダーで行間を...
-
PINVOKEで構造体配列をマーシャ...
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
-
Excel VBA メール作成について ...
-
stable diffusionのエラー
-
CGIを勉強しています。¥n(改...
-
【Excel VBA】10進数を2進数に...
-
micropythonコード 修正
-
エラー「書き込み中にアクセス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
バイト列とバイナリ列の違いが...
-
エクセルシート名の制限を変更...
-
ピクセル,dpiから容量(バイト...
-
ビットスワップとバイトスワッ...
-
テキストBOXの入力制限について
-
機種依存文字をチェックしたい。
-
「1TB」のHDDに日本語は何字入...
-
C++ Builderで文字列をバイトに...
-
全角半角を調べるライブラリ関...
-
SQLで1バイト、2バイト混在...
-
VB6とSQL Serverの桁の扱い方に...
-
jis x 0208 について
-
VBAでShift-JISのURLエンコード
-
この関数はどのプログラミング...
-
COBOL PICTUREで X,S,Vの意味
-
半角、全角の判別方法
おすすめ情報