更多>>数据库 Blog

MySQL中 varchar(12) 可以存储多少个汉字

涉及到字符串函数 length 和 char_length 计算单位的区别,以及编码 utf8 和 gbk 对汉字占用几个字节的区别。

     

一、length(str) 和 char_length(str) 的区别

1、length(str)

返回字符串 str 的长度,单位为字节。一个多字节字符算作多字节。

2、char_length(str)

返回字符串 str 的长度,单位为字符。一个多字节字符算作一个单字符。

这意味着对于一个包含5个2字节字符的字符串,length()的返回值是 10,而 char_length() 的返回值则为 5。


二、UTF-8 编码与 GBK 编码的区别

1、UTF8 编码数据表

(1)創建表

CREATE TABLE `my_test_utf8` (
  `my_id` int(11) NOT NULL AUTO_INCREMENT,
  `my_name` varchar(12) DEFAULT NULL,
  PRIMARY KEY (`my_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='my_test  UTF8';

(2)插入一條數據:

2019-12-18_143942.jpg

(3)檢索長度

SELECT length(my_name), char_length(my_name), my_name FROM `my_test_utf8` where my_id=1;

返回值如下:

2019-12-18_143733.jpg

2、GBK 编码的数据表

(1)創建表

CREATE TABLE `my_test_gbk` (
  `my_id` int(11) NOT NULL AUTO_INCREMENT,
  `my_name` varchar(12) DEFAULT NULL,
  PRIMARY KEY (`my_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=gbk COMMENT='my_test GBK';

(2)插入一條數據:

2019-12-18_143909.jpg

(3)檢索長度

SELECT length(my_name), char_length(my_name), my_name FROM `my_test_gbk` where my_id=1;

返回值如下:

2019-12-18_143702.jpg


三、總結

对于 UTF8 编码,一个汉字,即一个字符,占 3 个字节。

对于 GBK 编码,一个汉字,即一个字符,占 2 个字节。

MySQL 4.0 版本以下,以字节解释长度。

MySQL 5.0 版本以上,以字符解释长度。

所以 varchar(12) 可存储 12 个汉字,即 12 个字符。


評論列表

no_photo

viagra or cialis

song on viagra commercial

2021-06-11 22:41:04

no_photo

cialis and deafness

lasilix where to buy non precription

2021-06-09 18:02:25

no_photo

alternative to cialis

can you buy cialis online

2021-05-25 04:49:50

no_photo

cialis or levitra stronger

buy furosemide online uk cheap

2021-05-23 02:46:45

發表評論

用來接收審核回複提醒,請認真填寫

captcha
看不清?點擊圖片換一張