ここではMySQLで、varcharの最大文字数や格納できる全角文字数について少し試してみた結果を紹介しています。
varcharの最大文字数
VARCHARの有効な最大長は、最大行サイズは65,535バイトです。
UTF8を使用している場合は、1文字が最大3バイトになり、VARCHARに登録できる文字数は最大21,844文字となります。
テーブル作成して検証
実際にMySQL上で、VARCHAR型で列を定義してみました。
次のSQLでは、21,844文字でテーブルが正常に作成できました。
mysql> CREATE TABLE tab1( col1 varChar(21844) );
Query OK, 0 rows affected (0.07 sec)
次のSQLでは、21,845文字でテーブルは作成できませんでした。列のサイズが大きすぎるというエラーになりました。
mysql> CREATE TABLE tab2( col1 varChar(21845) );
ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
ということで、UTF8の環境ではVARCHAR型の列には、21,844文字が最大文字数となるようです。
varcharに格納できる全角文字数
varcharに格納できる全角文字数は、列を定義したときに指定した値になります。
次のSQLではCOL1列を定義するときに「varchar(10)」としています。このときCOL1列に格納できる全角文字数は10文字になります。
CREATE TABLE tab1(
col1 varchar(10)
);
varchar(文字数)という定義になります。
※ver4.1よりも前のバージョンではvarchar(バイト数)という定義になるようです。