在閱讀《阿里巴巴java開發手冊》中,看到如下說明:
有些不懂,就去查找了相關資料。
官網描述如下:
總結一下就是說,無論是LENGTH()還是CHAR_LENGTH()都是為了統計字符串的長度。只不過,LENGTH()是按照字節來統計的,CHAR_LENGTH()是按照字符來統計的。例如:一個包含5個字符且每個字符占兩個字節的字符串而言,LENGTH()返回長度10,CHAR_LENGTH()返回長度是5;如果對於單字節的字符,則兩者返回結果相同。
那么,如何判斷多字節字符是占兩個字節,還是三個字節呢?繼續查了點資料:
原來這里的字節數和編碼有關。
所以回過頭來看文章開頭所描述的問題:因為編碼是UTF-8,所以一個中文占3個字節,所以LENGTH(“輕松工作”)值為12。
另外補充下,這里英文只占一個字節:
select length("China");