更多>>數據庫 Blog
來源:一度好 時間:2019-12-18 閱讀:4896
涉及到字符串函數 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)插入一條數據:
(3)檢索長度
SELECT length(my_name), char_length(my_name), my_name FROM `my_test_utf8` where my_id=1;
返回值如下:
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)插入一條數據:
(3)檢索長度
SELECT length(my_name), char_length(my_name), my_name FROM `my_test_gbk` where my_id=1;
返回值如下:
三、總結
對于 UTF8 編碼,一個漢字,即一個字符,占 3 個字節。
對于 GBK 編碼,一個漢字,即一個字符,占 2 個字節。
MySQL 4.0 版本以下,以字節解釋長度。
MySQL 5.0 版本以上,以字符解釋長度。
所以 varchar(12) 可存儲 12 個漢字,即 12 個字符。
評論列表 |
暫時沒有相關記錄
|
發表評論