ホームページ >データベース >mysql チュートリアル >MySQL は UTF-8 テーブルの VARCHAR 長さをどのように解釈しますか?
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 サイトの他の関連記事を参照してください。