`

mysql中varchar(100)可以存100个汉字和100个英文

阅读更多

mysql> show variables like 'character%'; 

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

| character_set_client     | utf8                       |

| character_set_connection | utf8                       |

| character_set_database   | utf8                       |

| character_set_filesystem | binary                     |

| character_set_results    | utf8                       |

| character_set_server     | utf8                       |

| character_set_system     | utf8                       |

| character_sets_dir       | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

 

8 rows in set

mysql字符集如上,经测验`company` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '公司',company可以存储100个汉字或100个英文。

 

以下是查找的资料,仅供参考:

 

Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节
char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节
Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"
而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,
就是把它填满为100个字节)。

由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格
去掉! 

资料引用:http://www.knowsky.com/1997.html

 

 

看你数据库的字符集是什么,如果是UTF8,则varchar2 100 可存100个汉字。

 

与这个参数有关系吧:nls_length_semantics

SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';

VALUE
--------------------------------------------------------------------------------
AL32UTF8

SQL> create table ss(ss varchar2(10));

表已创建。

SQL> insert into ss values('代数式地方大师傅');

已创建 1 行。

SQL> select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET';

VALUE
--------------------------------------------------------------------------------
ZHS16GBK

SQL> create table ss (ss varchar2(10));

表已创建。

SQL> insert into ss values('大撒法似的似的');
insert into ss values('大撒法似的似的')
            *
ERROR 位于第 1 行:
ORA-01401: 插入的值对于列过大

 

SQL> create table ss (ss varchar2(10));

表已创建。

SQL> insert into ss values('大撒法似的似的');
insert into ss values('大撒法似的似的')
            *
ERROR 位于第 1 行:
ORA-01401: 插入的值对于列过大

=========================================================
这个与nls_length_semantics的设置有关,因为其当前设置为byte

需要改变一下建表时的定义,这么写:
create table ss (ss varchar2(10 char));


如果nls_length_semantics的值为char,则没有上述问题

分享到:
评论

相关推荐

    Mysql中varchar长度设置方法

    mysql varchar(50) 不管中文 还是英文 都是存50个的 MySQL5的文档,其中对varchar字段类型这样描述:varchar(m) 变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用...

    Mysql varchar大小长度问题介绍

    4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大...

    MySQL中文参考手册.chm

    11 MySQL 基准套件 12 MySQL 实用程序 12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 ...

    MySQL数据类型varchar详解

    不管是一个中英文字符或者数字、或者一个汉字,都当做一个字符。在4.1之前,N表示的是最大存储的字节数(bytes)。2、varchar(N)到底能存多长的数据在mysql reference manual上,varchar最多能存储65535个字节的数据...

    MySQL结巴中文分词插件SqlJieba.zip

    MySQL 结巴中文分词插件 SqlJieba 『关键词』MySQL, 插件(Plugin), 中文分词, 结巴分词(Jieba), 全文检索(Full-Text), SqlJieba 使用方法:mysql> create database sqljieba; Query OK, 1 row affected ...

    MYSQL世界各洲包含国家英文、中文、简称、层级关系表-----------19

    MYSQL世界各洲包含国家英文、中文、简称、层级关系表,`bby_country` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `parent_id` smallint(6) NOT NULL DEFAULT '0' ...

    深入研究mysql中的varchar和limit(容易被忽略的知识)

     1、varchar(5)可以存储多少个汉字,多少个字母数字?  相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,...

    MySQL中文参考手册

    * 0 译者序 * 1 MySQL的一般的信息 ... # 7.3.7.1 CHAR和VARCHAR类型 # 7.3.7.2 BLOB和TEXT类型 # 7.3.7.3 ENUM类型 # 7.3.7.4 SET类型 + 7.3.8 为列选择正确的类型 + 7.3.9 列索引 + 7.3.10 多列索引 +...

    MYSQL世界各洲包含国家英文、中文、简称、层级关系表

    MYSQL世界各洲包含国家英文、中文、简称、层级关系表,`bby_country` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `parent_id` smallint(6) NOT NULL DEFAULT '...

    MySQL 5.1中文手冊

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

    mysql5.1中文手册

    MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 ...

    MySql 5.1 参考手册.chm

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

    MySQL 5.1官方简体中文参考手册

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

    MYSQL数据库中的现有表增加新字段(列)

    –在MYSQL中,如果是表名,数据库名,列名,在你增加,修改,更新的时候都需要使用ESC键盘下的重音符号,才可以添加,相应的列名或者更新修改。 当然现在大多都是用phpmyadmin或mysql图形化操作工具,更方法,这样...

    MySQL 5.1参考手册中文版

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. ...

    MYSQL中文手册

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. ...

    mysql官方中文参考手册

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

    varChar和Char之间的区别?

    而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节; 4.一般用 char 类型的 存放 固定的数据; 5.两者的存储数据都非unicode的字符数据。 补充: 字符串:(1)Char:固定长度,长度为n个字节,...

    MySQL 5.1参考手册 (中文版)

    10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 10.3.4. 列字符集和校对 10.3.5. 字符集和校对分配示例 10.3.6. 连接字符...

Global site tag (gtag.js) - Google Analytics