mysql的varchar长度到底能插多少字符?

这篇具有很好参考价值的文章主要介绍了mysql的varchar长度到底能插多少字符?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在用navicat迁移表结构,从oracle到MySQL时,注意如下坑:
1、如果varchar2(256)以上,则在mysql会自动用text取代,需要考虑手工修改字段类型为varchar(256)
ALTER TABLE DES_LOGIC_RESOURCE MODIFY REMARK VARCHAR(4000);
2、分区表自动变成普通表

对于varchar的长度设置,经过测试:

varchar(6)表示可以插入6个汉字,或6个字母数字,或汉字和字母数字共6个,是表示插入的字符数,不是字节数。

需要注意:这点和oracle的varchar2不同,oracle是字节数长度,不是字符长度,一个汉字占2个字节,所以长度6最多只能存3个汉字。


[root@lnpg ~]# mysql -ugistar -pxxxxxx -h192.168.207.143 -A -D resdb
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 256
Server version: 8.0.35 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE TABLE tmysql (
    ->   name varchar(6) DEFAULT NULL
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected (1.76 sec)

mysql> insert into tmysql values('北京蒙迪艾尔');
insert into tmysql values('北京蒙迪艾尔');
Query OK, 1 row affected (0.21 sec)

mysql> insert into tmysql values('北京蒙迪艾尔');
Query OK, 1 row affected (0.04 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into tmysql values('北京蒙迪艾尔a');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> show variables like '%char%';
+-------------------------------------------------+--------------------------------+
| Variable_name                                   | Value                          |
+-------------------------------------------------+--------------------------------+
| character_set_client                            | utf8mb4                        |
| character_set_connection                        | utf8mb4                        |
| character_set_database                          | utf8mb4                        |
| character_set_filesystem                        | binary                         |
| character_set_results                           | utf8mb4                        |
| character_set_server                            | utf8mb4                        |
| character_set_system                            | utf8mb3                        |
| character_sets_dir                              | /usr/share/mysql-8.0/charsets/ |
| validate_password.changed_characters_percentage | 0                              |
| validate_password.special_char_count            | 1                              |
+-------------------------------------------------+--------------------------------+
10 rows in set (4.94 sec)

mysql> insert into tmysql values('1234567');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> insert into tmysql values('123456');
Query OK, 1 row affected (0.02 sec)

mysql> insert into tmysql values('abcd1234');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> insert into tmysql values('abcdef');
Query OK, 1 row affected (0.00 sec)

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

mysql> insert into tmysql values('abcdef1');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> insert into tmysql values('abcde好');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tmysql values('abcde好1');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from tmysql;
+--------------------+
| name               |
+--------------------+
| 北京蒙迪艾尔       |
| 北京蒙迪艾尔       |
| 123456             |
| abcdef             |
| abcde1             |
| abcde好            |
+--------------------+
6 rows in set (0.00 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.35    |
+-----------+
1 row in set (0.02 sec)

mysql> desc tmysql;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| name  | varchar(6) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
1 row in set (0.39 sec)

mysql> 

看下Oracle的测试:汉字占用2个字节。文章来源地址https://www.toymoban.com/news/detail-822680.html

[oracle@lncs ~]$ sqlplus jyc/jyc

SQL*Plus: Release 11.2.0.4.0 Production on Tue Jan 23 13:46:28 2024

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create table toracle
  2    (
  3      NAME VARCHAR2(6)
  4     );

Table created.

SQL> insert into toracle values('北京蒙迪艾尔');
insert into toracle values('北京蒙迪艾尔')
                           *
ERROR at line 1:
ORA-12899: value too large for column "JYC"."TORACLE"."NAME" (actual: 12,
maximum: 6)


SQL> select length('北京蒙迪艾尔') from dual;                                        

LENGTH('北京蒙迪艾尔')
----------------------
                     6

SQL> insert into toracle values('蒙迪艾');                                     

1 row created.

SQL> select name ,length(name) from toracle;

NAME   LENGTH(NAME)
------ ------------
蒙迪艾            3

SQL> insert into toracle values('蒙迪艾尔');
insert into toracle values('蒙迪艾尔')
                           *
ERROR at line 1:
ORA-12899: value too large for column "JYC"."TORACLE"."NAME" (actual: 8,
maximum: 6)


SQL> insert into toracle values('1234567');
insert into toracle values('1234567')
                           *
ERROR at line 1:
ORA-12899: value too large for column "JYC"."TORACLE"."NAME" (actual: 7,
maximum: 6)


SQL> insert into toracle values('123456');

1 row created.

SQL> insert into toracle values('12345蒙');
insert into toracle values('12345蒙')
                           *
ERROR at line 1:
ORA-12899: value too large for column "JYC"."TORACLE"."NAME" (actual: 7,
maximum: 6)


SQL> insert into toracle values('1234蒙');

1 row created.

SQL> commit;

Commit complete.

SQL> select length('1234蒙') from dual;         

LENGTH('1234蒙')
----------------
               5

SQL> select length('12345') from dual;       

LENGTH('12345')
---------------
              5

SQL> select length('好12345') from dual;

LENGTH('好123455')
------------------
                 7

SQL> select length('好1234') from dual;

LENGTH('好1234')
----------------
               5

到了这里,关于mysql的varchar长度到底能插多少字符?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 你的mysql到底能存多少数据呢?

    参考借鉴文章 我说MySQL每张表最好不超过2000万数据,面试官让我回去等通知? 这里自己在总结一下,原因是相关知识欠缺,看别人的文章研究很久才弄明白,所以这里记录一些心得。 作者:阿杆 链接:https://juejin.cn/post/7165689453124517896 来源:稀土掘金 著作权归作者所有。商

    2024年02月01日
    浏览(43)
  • MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%?

    上篇文章MySQL字段的时间类型该如何选择?千万数据下性能提升10%~30%🚀我们讨论过时间类型的选择 本篇文章来讨论MySQL中字符类型的选择并来深入实践char与varchar类型的最佳使用场景 我们最经常使用的字符串类型应该是char与varchar,它们作为本篇文章的主角,对于它们的描述

    2024年02月08日
    浏览(43)
  • MySql中group_concat字符长度限制

    group_concat长度限制默认是1024,有两个解决方法: 1. 彻底修改,找到MYSQL的配置文件my.ini或者my.cnf,在里面添加以下信息 group_concat_max_len = -1  # -1为最大值或填入你要的最大长度 或者自己设置group_concat_max_len = 1024000。 注意:需要重启MySQL才能生效。 2. 在客户端连上mysql,执行语

    2024年04月28日
    浏览(39)
  • 解决Data too long for column ‘xxx‘ at row 1问题以及深入理解mysql的字符串数据类型(char,varchar,enum,text,longtext...)

    今天在测试环境新增数据时,报出如是错误: Data too long for column \\\'apply_service_type\\\' at row 1 。 为了复现这个问题,我特地在本地数据库中增加如下 test 表:

    2023年04月17日
    浏览(48)
  • 固态硬盘到底有多少种接口

    1.SATA 接口 SATA 接口是传统硬盘接口,老电脑升级固态硬盘一般 仅支持 SATA 接口和 mSATA 接口。 SATA 分 SATA1.0-3.0 , 目前市面上以 SATA3.0 居多,支持 SATA 的固态硬盘基本为 SATA3.0 接口。 SATA3.0 接口理论传输速度约为 6Gbs ,约是 600Mb/S 。   2.mSata 接口 mSATA 接口是 SATA 接口的迷你版

    2024年02月13日
    浏览(44)
  • MySQL varchar详解

    💡 说明:以下结果都是在mysql8.2及Innodb环境下测试。 varchar(255) 表示可以存储最大255个字符,至于占多少个字节由字符集决定。 如果你去搜索过这个答案,我相信你或多或少都看到过65535这个答案。比如我们尝试询问一下当下最火的人工智能,你可能会得到和我类似答案。

    2024年03月20日
    浏览(40)
  • 自动驾驶到底需要多少个传感器?

    由于传感器的成本从15美元到1美元不等,汽车制造商想知道车辆完全自动驾驶需要多少传感器。 这些传感器用于收集有关周围环境的数据,它们包括图像、激光雷达、雷达、超声波和热传感器。一种类型的传感器是不够的,因为每种传感器都有其局限性。这是传感器融合背后

    2024年03月08日
    浏览(47)
  • 【MySQL】Char与VarChar详解

    目录 长度申明 存储结构 超长处理 变长字段 排序规则 CHAR和VARCHAR类型相似,但它们在存储和检索方式上有所不同。它们在最大长度和是否保留尾随空格方面也存在差异。 CHAR和VARCHAR类型的声明包含一个长度,该长度表示您希望存储的最大字符数。例如,CHAR(30)可以容纳最多

    2024年01月24日
    浏览(55)
  • MySQL之char、varchar类型简析

    我们都知道,MySQL中关于字符,有char和varchar两种常用的类型,可能在平时的使用过程中,大家不会去关心这两种类型的区别,只是会用就可以了,或者说看到过一些它们的区别,但是没有时间去测试,今天有时间了,我将这两种类型的具体情况实验一把,让大家直观感受下,

    2024年01月20日
    浏览(59)
  • 关于WMT,市值空间到底有多少想象力?

    前不久,知名交易平台Kucoin、ZB以及抹茶等上线了WMT,众多一级市场他投资者获得了不菲的收益,据了解WMT的市场公募价格为0.2美金,而目前其二级市场价格为0.6929美金。在近期WMT作为Cardano生态的明星项目,在二级市场稳步上涨且走势喜人,备受投资者关注。那么WMT到底是一

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包