MySQL LENGTH() 函數以“字節”為單位測量字符串長度,這意味著它不是多字節安全的。多字節安全函數(如 CHAR_LENGTH() 或 CHARACTER_LENGTH())與 LENGTH() 函數之間的結果差異尤其與 Unicode 相關,其中大多數字符都以兩個字節進行編碼,或者與 UTF-8 相關,其中字節數各不相同。例如,如果字符串包含四個 2 字節字符,則 LENGTH() 函數將返回 8,而 CHAR_LENGTH() 或 CHARACTER_LENGTH() 函數將返回 4。如下例所示 –
示例
mysql> Select LENGTH('tutorialspoint'); +--------------------------+ | LENGTH('tutorialspoint') | +--------------------------+ | 14 | +--------------------------+ 1 row in set (0.00 sec)
登錄后復制
上面的結果集顯示字符串“tutorialspoint”的長度為14,因為它還沒有轉換為Unicode字符。以下查詢將其轉換為 Unicode 字符 –
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
登錄后復制
將字符串轉換為 Unicode 后,結果為 28 而不是 14,因為在 Unicode 中單個字符占用 2 個字節,如下所示 –
mysql> Select LENGTH(@A); +------------+ | LENGTH(@A) | +------------+ | 28 | +------------+ 1 row in set (0.00 sec)
登錄后復制
但是 CHAR_LENGTH() 給出的結果是 14,因為它是多字節安全函數,如下所示 –
mysql> Select CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+ 1 row in set (0.00 sec)
登錄后復制
以上就是MySQL LENGTH() 函數如何測量字符串長度?的詳細內容,更多請關注www.92cms.cn其它相關文章!