3

確かに初歩的な質問ですが、私は尋ねなければなりません: :-) varchar 型で長さ 255 の列と、この列の行に格納されている最長の文字列の長さが 200 であると仮定します。それから200?文字列はすべて「カット」されますか?

4

1 に答える 1

3

デフォルトでは、列を変更できるようになり、新しい長さよりも長い文字列が切り捨てられ、警告が生成されます。

mysql> create table t (v varchar(20));
Query OK, 0 rows affected (0.06 sec)

mysql> insert into t values ('12345678901234567890');
Query OK, 1 row affected (0.00 sec)

mysql> alter table t modify column v varchar(10);
Query OK, 1 row affected, 1 warning (0.04 sec)
Records: 1  Duplicates: 0  Warnings: 1

mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'v' at row 1 | 
+---------+------+----------------------------------------+
1 row in set (0.00 sec)

mysql> select * from t;
+------------+
| v          |
+------------+
| 1234567890 | 
+------------+
1 row in set (0.00 sec)

SQL モード STRICT_ALL_TABLESまたは設定がある場合STRICT_TRANS_TABLES、警告はエラーになり、ALTER は失敗します。

mysql> alter table t modify column v varchar(10);
ERROR 1265 (01000): Data truncated for column 'v' at row 1
于 2011-08-03T00:33:09.597 に答える