MySQLのVARCHARカラムの最大長はどれくらい?文字数制限と行サイズ上限を徹底解説
VARCHARデータ型は、1バイト文字およびマルチバイト文字の可変長文字データを格納するために使用される型です。構文は VARCHAR(n) という形式で、n は最大文字数を表し、テーブル作成時に必ず指定する必要があります。
なお、MySQL 5.0.3より前のバージョンでは n の指定範囲は 0〜255 でしたが、MySQL 5.0.3以降では 0〜65,535 の範囲で指定できるように拡張されました。
VARCHARに格納できる最大文字数の決まり方
VARCHARに実際に格納できる最大文字数は、「行の最大サイズ」と「使用する文字セット」の2つの要素によって決まります。MySQLにおける行サイズの上限は65,535バイトであり、これはテーブル内のすべてのカラムを合計したサイズがこの値を超えられないことを意味します。
- ASCII文字セットの場合: 1文字につき1バイトを使用するため、最大65,535文字を格納できます。
- utf8(utf8mb3)文字セットの場合: 1文字につき最大3バイトを使用するため、格納できるのは最大約21,844文字までです。
具体例:上限ギリギリのテーブル作成
まず、行サイズの上限ちょうどになるように2つのVARCHARカラムを持つテーブルを作成してみます。
mysql> CREATE TABLE var_test(FName VARCHAR(32765) NOT NULL, LName VARCHAR(32766) NOT NULL); Query OK, 0 rows affected (0.25 sec)
上記のクエリでは、FName VARCHAR(32765) と LName VARCHAR(32766) の2カラムを持つテーブルが正常に作成されました。合計長は 32765 + 2 + 32766 + 2 = 65,535 バイトとなり、各行にはカラムごとの文字列の長さ情報を格納するために2バイトが追加で必要になる点に注意してください。
上限を超えた場合のエラー
次に、FNameの長さを1バイト分だけ大きい32766に変更してテーブルを作成してみます。
mysql> CREATE TABLE var_test1(FName VARCHAR(32766) NOT NULL, LName VARCHAR(32766) NOT NULL); ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
わずか1バイト超えただけでも、MySQLは上記のように「Row size too large(行サイズが大きすぎる)」というエラーを返します。エラーメッセージによると、BLOBを除いたテーブルタイプの最大行サイズは65,535バイトであり、これを超える場合は一部のカラムをTEXT型またはBLOB型に変更する必要があるとのことです。
このように、VARCHARの最大長は理論上65,535文字ですが、実運用では行サイズ上限の65,535バイトと文字セットの種類に依存します。より長い文字列データを扱いたい場合は、TEXT型やBLOB型の活用を検討するとよいでしょう。
-
MySQLで列から最大値を取得する方法
MySQLで列の最大値を取得するには?MySQLのテーブルから特定の列の最大値を取得するには、ORDER BY句とLIMIT句を組み合わせる方法が便利です。ここでは、実際にテーブルを作成し、データを挿入して、最大値を取得する手順を順番に解説します。1. テーブルを作成するまず、以下のコマンドでサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> Value int -> ); Query OK, 0 rows affected (0.63 sec)2. レコードを挿入する次に、INSERTコ
-
Pythonの文字列の最大長はどれくらい?sys.maxsizeで確認する上限サイズ
Pythonにおける文字列の最大長Pythonで扱える文字列の最大長は、固定値ではなく実行環境(プラットフォーム)に依存します。具体的には、システムが利用できるアドレス空間や搭載メモリ(RAM)の容量によって上限が決まります。sys.maxsizeで上限を確認する標準ライブラリのsysモジュールに定義されている定数sys.maxsizeを参照すると、その環境での最大サイズを確認できます。64ビットシステムでは 263 − 1(9223372036854775807)が返されます。>>> import sys>>> sys.maxsize92233720368