首頁  >  文章  >  資料庫  >  MySQL LENGTH() 函數如何測量字串長度?

MySQL LENGTH() 函數如何測量字串長度?

WBOY
WBOY轉載
2023-09-02 16:45:021389瀏覽

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)

以上是MySQL LENGTH() 函數如何測量字串長度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除