MySQL BIT_LENGTH() 函式是否安全多位元組?
就像 LENGTH() 函式一樣,MySQL BIT_LENGTH() 函式不是一個安全的多位元組函式。眾所周知,多位元組安全函式(例如 CHAR_LENGTH() 或 CHARACTER_LENGTH())與 BIT_LENGTH() 函式的結果差異尤其適用於 Unicode(其中大多數字符以兩個位元組編碼)或 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)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP