首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中VARCHAR(255)的存储大小是多少?

问MySQL中VARCHAR(255)的存储大小是多少?
EN

Stack Overflow用户
提问于 2015-03-27 05:45:41
回答 1查看 499关注 0票数 0

我能够在数据类型为VARCHAR( 255 )的MySQL列中存储超过255个字符(例如'a')。请澄清

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 08:22:06

字符列的最大存储大小由宽度(即255)定义。您可以插入较短的值,但它们将被截断并显示警告。

如果使用严格的SQL模式之一,它将产生错误而不是警告。

见文档:https://dev.mysql.com/doc/refman/5.6/en/string-type-overview.html

代码语言:javascript
复制
mysql [localhost] {msandbox} (test) > CREATE TABLE t_varchar(a VARCHAR(127));
Query OK, 0 rows affected (0.02 sec)

mysql [localhost] {msandbox} (test) > SET sql_mode='';
Query OK, 0 rows affected (0.00 sec)

mysql [localhost] {msandbox} (test) > INSERT INTO t_varchar VALUES(REPEAT('a', 127));
Query OK, 1 row affected (0.00 sec)

mysql [localhost] {msandbox} (test) > INSERT INTO t_varchar VALUES(REPEAT('a', 128));
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql [localhost] {msandbox} (test) > SELECT LENGTH(a) FROM t_varchar;
+-----------+
| LENGTH(a) |
+-----------+
|       127 |
|       127 |
+-----------+
2 rows in set (0.00 sec)

mysql [localhost] {msandbox} (test) > 
mysql [localhost] {msandbox} (test) > TRUNCATE TABLE t_varchar;
Query OK, 0 rows affected (0.00 sec)

mysql [localhost] {msandbox} (test) > SET sql_mode='STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.00 sec)

mysql [localhost] {msandbox} (test) > INSERT INTO t_varchar VALUES(REPEAT('a', 127));
Query OK, 1 row affected (0.00 sec)

mysql [localhost] {msandbox} (test) > INSERT INTO t_varchar VALUES(REPEAT('a', 128));
ERROR 1406 (22001): Data too long for column 'a' at row 1
mysql [localhost] {msandbox} (test) > SELECT LENGTH(a) FROM t_varchar;
+-----------+
| LENGTH(a) |
+-----------+
|       127 |
+-----------+
1 row in set (0.00 sec)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29294086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档