varchar の保存ルール4.0 未満のバージョンでは、varchar(20) は 20 バイトを意味します。UTF8 中国語文字を保存する場合、保存できるのは 6 文字 (中国語文字ごとに 3 バイト) だけです。
varcharとcharの違い違い1: 固定長と可変長char は固定長を意味し、varchar は可変長を意味します。挿入された文字列が長さを超えた場合、状況に応じて処理されます。厳密モードの場合、挿入は拒否され、エラーメッセージが表示されます。緩いモードの場合、インターセプトされてから挿入されます。挿入した文字列の長さが定義した長さより短い場合は、char(10)のように10文字が格納されているという意味で異なる扱いになります。挿入する文字数に関係なく10文字になります。10文字未満の場合はスペースで埋められます。 varchar(10)が10未満の場合、挿入された文字数と同じ数の文字が格納されます。 2つ目の違いはストレージ容量です。 char の場合、エンコードに関係なく、保存できる文字の最大数は 255 です。 VARCHAR エンコードの長さ制限文字タイプが gbk の場合、各文字は最大 2 バイトを占め、最大長は 32766 を超えることはできません。文字タイプが utf8 の場合、各文字は最大 3 バイトを占め、最大長は 21845 を超えることはできません。 定義中に上記の制限を超えると、varchar フィールドは強制的にテキスト型に変換され、警告が生成されます。 行の長さ制限実際のアプリケーションで varchar の長さ制限が発生する原因は、行定義の長さです。 MySQL では、行の定義長が 65535 を超えないようにする必要があります。定義されたテーブルの長さがこの値を超えると、エラー 1118 (42000): 行サイズが大きすぎます。使用されているテーブル タイプの最大行サイズは、BLOB を除いて 65535 です。一部の列を TEXT または BLOB に変更する必要があります。
varchar の制御ビットMySQL の Varchar 文字型では、他の制御情報用に 1 バイトも予約されています。 例例 1: テーブルに VARCHAR(N) 型と utf8 エンコードのフィールドが 1 つだけある場合、N の最大値はいくらですか?たとえば、create table tb_name1(a varchar(N)) default charset=utf8 の場合、N の最大値は (65535-1-2)/3=21844 になります。 テーブル tb_name1(a varchar(21844)) を作成します。デフォルトの文字セットは utf8 です。 クエリは正常、影響を受けた行は 0 行 (0.38 秒) テーブル tb_name1 を削除します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) テーブル tb_name1(a varchar(21845)) を作成します。デフォルトの文字セットは utf8 です。 エラー 1118 (42000): 行サイズが大きすぎます。使用されているテーブルタイプの最大行サイズは、BLOB を除いて 65535 です。いくつかの列を変更する必要があります。 例 2: テーブルに VARCHAR(N) 型のフィールドと、utf8 でエンコードされた他のフィールド型がある場合、N の最大値はいくらでしょうか。たとえば、create table tb_name2(a int, b char(20), c varchar(N)) default charset=utf8; です。 SQL テスト: テーブル tb_name2(a int, b char(20), c varchar(21822)) を作成します。デフォルトの文字セットは utf8 です。 クエリは正常、影響を受けた行は 0 行 (0.28 秒) テーブル tb_name2 を削除します。 クエリは正常、影響を受けた行は 0 行 (0.20 秒) テーブル tb_name2(a int, b char(20), c varchar(21823)) を作成します。デフォルトの文字セットは utf8 です。 エラー 1118 (42000): 行サイズが大きすぎます。使用されているテーブル タイプの最大行サイズは、BLOB を除いて 65535 です。一部の列を TEXT または BLOB に変更する必要があります。 例 3: テーブルに VARCHAR(N) タイプの複数のフィールドと他のフィールド タイプ、gbk エンコーディングがある場合、N の最大値はいくらですか?たとえば、create table tb_name3(a int, b char(20), c varchar(50), d varchar(N)) default charset=gbk; です。 SQL テスト: テーブル tb_name3(a int, b char(20), c varchar(50), d varchar(32694)) を作成します。デフォルトの文字セットは gbk です。 エラー 1118 (42000): 行サイズが大きすぎます。使用されているテーブル タイプの最大行サイズは、BLOB を除いて 65535 です。一部の列を TEXT または BLOB に変更する必要があります。 テーブル tb_name3(a int, b char(20), c varchar(50), d varchar(32693)) を作成します。デフォルトの文字セットは gbk です。 クエリは正常、影響を受けた行は 0 行 (0.18 秒) 上記はMysqlのvarchar型で注意すべき点の詳細です。Mysqlのvarchar型の詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。 以下もご興味があるかもしれません:
|
<<: XHTML 入門チュートリアル: テキストの書式設定と特殊文字
この記事では、MySQL 8.0.16 Win10 zip版のインストールと設定のグラフィックチュー...
Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...
長い間何もしていなかった人は、努力をすると一生懸命働いていると思うようになります。 1. 問題Nav...
CSS3 border-image プロパティを使用すると、要素の周囲に画像の境界線を設定できます。...
免責事項:プロジェクトでは ROS 環境を使用する必要があるため、これは Ubuntu 20.04 ...
目次序文必要成し遂げる最初のレンダリングメニュー項目をクリックしますスタイルの区別デフォルトのハイラ...
RDF と OWL は、2 つの重要なセマンティック ウェブ テクノロジーです。 RDF と OWL...
1. Dockerはローカルイメージをインポートする場合によっては、イメージをローカルまたは別の友人...
この記事では、reduce()、filter()、map()、every()、some()、spre...
目次1. Vue スキャフォールディングをインストールする2. プロジェクトを作成する3.1 プロジ...
会社が現在使用しているソリューションを確認するためにバックエンドにログインしました。使用される FT...
まず、Tomcatフォルダを作成します。Dockerの設定を容易にするために、ルートディレクトリに直...
目次トリガーについてトリガーの使用トリガーを作成するトリガーを表示トリガーの削除使用上の注意新旧の違...
Mysql5.7.19バージョンは今年リリースされた新しいバージョンです。最近のMySQLのバージ...
1. Get はサーバーからデータを取得するために使用され、Post はサーバーにデータを渡すために...