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)

更新於: 22-Jun-2020

116 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告