首頁 >資料庫 >mysql教程 >MySQL LENGTH() 和 CHAR_LENGTH() 函數有什麼不同?

MySQL LENGTH() 和 CHAR_LENGTH() 函數有什麼不同?

WBOY
WBOY轉載
2023-09-02 16:57:071188瀏覽

MySQL LENGTH() 和 CHAR_LENGTH() 函数有什么区别?

這兩個函數都是字串函數,並且傳回字串中存在的字元數。但它們的不同之處在於 CHAR_LENGTH() 函數以「字元」為單位測量字串長度,而 LENGTH() 函數以「位元組」為單位測量字串長度。換句話說,我們可以說 CHAR_LENGTH() 函數是多位元組安全的,也就是它忽略字元是單字節還是多位元組。例如,如果一個字串包含四個 2 位元組字符,則 LENGTH()。

函數會傳回 8,而 CHAR_LENGTH() 函數將會傳回 4。從這個意義上來說,我們可以說 CHAR_LENGTH()給出的結果比 LENGTH() 函數更精確。

這種差異與 Unicode 特別相關,其中大多數字元都以兩個位元組進行編碼,或與 UTF-8 相關,其中位元組數各不相同。下面的範例示範了-

範例

在下面的範例中,首先,字串'Gaurav' 被轉換為ucs2 strong>,即Unicode,儲存2 位元組字符,字符集。然後我們可以觀察結果集的差異,即 LENGTH() 傳回以位元組數為單位的長度,而 CHAR_LENGTH() 則傳回以字元數為單位的長度。

mysql> SET @A = CONVERT('Gaurav' USING ucs2);
Query OK, 0 rows affected (0.15 sec)

mysql> Select Char_length(@A), LENGTH(@A);

+-----------------+------------+
| Char_length(@A) | LENGTH(@A) |
+-----------------+------------+
| 6               | 12         |
+-----------------+------------+

1 row in set (0.03 sec)

現在,在下面的範例中,我們使用 UTF-8 中的特殊字符,字符集的位元組數有所不同。然後我們可以從結果集中觀察差異。

mysql> SET @B = CONVERT('©' USING utf8);
Query OK, 0 rows affected (0.15 sec)

mysql> Select CHAR_LENGTH(@B);

+-----------------------+
| CHAR_LENGTH(@B)       |
+-----------------------+
| 1                     |
+-----------------------+

1 row in set (0.00 sec)

mysql> Select LENGTH(@B);

+---------------+
| LENGTH(@B)    |
+---------------+
| 2             |
+---------------+

1 row in set (0.00 sec)

以上是MySQL LENGTH() 和 CHAR_LENGTH() 函數有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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