ホームページ >データベース >mysql チュートリアル >MySQL は UTF-8 テーブルの VARCHAR 長さをどのように解釈しますか?

MySQL は UTF-8 テーブルの VARCHAR 長さをどのように解釈しますか?

DDD
DDDオリジナル
2024-11-21 07:25:11374ブラウズ

How Does MySQL Interpret VARCHAR Lengths in UTF-8 Tables?

MySQL での VARCHAR の長さと UTF-8 のデコード

MySQL で VARCHAR フィールドを作成する際、データのストレージ容量に関してよくある誤解が生じます。ユーザーは、UTF-8 テーブルの VARCHAR(32) フィールドが 32 バイトまたは 32 文字のどちらか大きい方を収容できると想定する場合があります。ただし、実際の解釈は、使用されている MySQL のバージョンによって異なります。

バージョン 4 とバージョン 5

4.1 より前の MySQL バージョンでは、VARCHAR の長さはバイト単位で測定されました。したがって、VARCHAR(32) フィールドには最大 32 バイトのデータを格納できます。ただし、MySQL バージョン 5 以降では、VARCHAR の長さは文字単位で解釈されます。したがって、UTF-8 テーブルの VARCHAR(32) フィールドは最大 32 文字を保持できます。

MySQL の公式ドキュメント

この問題を明確にするために、公式の MySQL 5 ドキュメントには次のように明示的に記載されています:

「MySQL は文字列定義の長さの指定を文字単位で解釈します。(MySQL より前) 4.1 では、列の長さはバイト単位で解釈されていました。) これは、CHAR、VARCHAR、および TEXT 型に適用されます。"

UTF-8 の影響

さらに、文字使用されるセットは、VARCHAR 列の最大長に影響を与える可能性があります。たとえば、UTF-8 文字では 1 文字あたり最大 3 バイトが必要になる場合があります。したがって、UTF-8 を使用する VARCHAR 列は、最大 21,844 文字として宣言できます。これは、最大行サイズ 65,535 バイトによって制限されます。

以上がMySQL は UTF-8 テーブルの VARCHAR 長さをどのように解釈しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。