MySQL 函式 BIT_LENGTH() 是否是多位元組安全的?
就像 LENGTH() 函式一樣,MySQL BIT_LENGTH() 函式不是多位元組安全的函式。正如我們所知,對於 Unicode 來說,多位元組安全函式(例如 CHAR_LENGTH() 或 CHARACTER_LENGTH())和 BIT_LENGTH() 函式之間的結果差異特別明顯,其中大多數字符使用兩個位元組編碼或對於位元組數不同的 UTF-8 來說,差異特別明顯。以下示例對此進行了說明 −
示例
mysql> Select BIT_LENGTH('tutorialspoint');
+------------------------------+
| BIT_LENGTH('tutorialspoint') |
+------------------------------+
| 112 |
+------------------------------+
1 row in set (0.00 sec)以上結果集顯示字串“tutorialspoint”的位長為 112,因為它尚未轉換為 Unicode 字元。以下查詢將其轉換為 Unicode 字元 −
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
Query OK, 0 rows affected (0.02 sec)轉換字串為 Unicode 後,它會產生 224 而不是 112 的結果,這是因為在 Unicode 中單個字元佔用 2 個位元組,如下所示 −
mysql> Select BIT_LENGTH(@A); +----------------+ | BIT_LENGTH(@A) | +----------------+ | 224 | +----------------+ 1 row in set (0.00 sec)
Advertisement
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP