在數據庫裡用length()來取數據長度的時候漢字有點小問題。
查看到一站長是這樣理解length函數的
一句話說明: 獲取字符串長度的mysql內置函數
length是mysql的一個用來來獲取字符串長度的內置函數方法, 同樣的獲取字符串長度的還有char_length. length: 是計算字段的長度, utf8編碼下,www.111cn.net一個漢字是算三個字符,一個數字或字母算一個字符。其他編碼下,一個漢字算兩個字符, 一個數字或字母算一個字符。
例子1: 查看mysql字符串的長度 SELECT LENGTH("要查看長度的mysql字段/mysql字符串");
例子2: 根據記錄的某個字段長度排序 SELECT * FROM table WHERE 1 ORDER BY LENGTH(name) ASC;
相關: char_length:在任何編碼下, 不管漢字還是數字或者是字母都算是一個字符. CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同義詞。 BIT_LENGTH(str) 返回2進制長度.
詳情說明
mysql:
utf-8 :length()一個漢字3個長度
gbk : length()一個漢字2個長度
oracle:
utf-8 :length()一個漢字3個長度
gbk : length()一個漢字1個長度
字母和數字都是1個長度
char_length()漢字、字母、數字都是1個長度 PHP:mb_strlen($str,'utf8')
查詢字符長度可以用
select length('漢') from dual
下面是補充說明length與char_length區別
length:是計算字段的長度一個漢字是算三個字符,一個數字或字母算一個字符
char_length:不管漢字還是數字或者是字母都算是一個字符