MySQL 的 LENGTH() 函式如何測量字串長度?
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)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP