一個UTF8占三個位元組(也與作業系統版本有關,有的版本為3有的為2)(三個位元組占一個字符),如果只存英文,則一個latin1占1個位元組
select length(“開心作業”); 查看開心作業占幾個位元組,需要先看他是什么編碼格式,length為看位元組數,
select char_length("開心作業“); 查看有幾個字符,為四個,
當客戶端發送“開心作業”時候,會告訴資料庫它的編碼格式是什么(character_set_client = utf-8),如果為utf-8,三個位元組占一個字符,所以此為12個位元組;如果是latin
總結一下就是說,無論是LENGTH()還是CHAR_LENGTH()都是為了統計字串的長度,只不過,LENGTH()是按照位元組來統計的,CHAR_LENGTH()是按照字符來統計的,例如:一個包含5個字符且每個字符占兩個位元組的字串而言,LENGTH()回傳長度10,CHAR_LENGTH()回傳長度是5;如果對于單位元組的字符,則兩者回傳結果相同,
那么,如何判斷多位元組字符是占兩個位元組,還是三個位元組呢?繼續查了點資料:
原來這里的位元組數和編碼有關,所以回過頭來看文章開頭所描述的問題:因為編碼是UTF-8,所以一個中文占3個位元組,所以LENGTH(“輕松作業”)值為12,
另外補充下,一個單詞有幾個字母就計幾個字符.比如:maybe 這個單詞由五個字母組成一個詞,它的字符數為5 .
個性簽名:一個人在年輕的時候浪費自己的才華與天賦是一件非常可惜的事情
如果覺得這篇文章對你有小小的幫助的話,記得在左下角點個“👍”哦,博主在此感謝!
萬水千山總是情,打賞5毛買辣條行不行,所以如果你心情還比較高興,也是可以掃碼打賞博主,哈哈哈(っ??ω??)っ???!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/13302.html
標籤:其他
