Computer >> Máy Tính >  >> Lập trình >> MySQL

Hàm BIT_LENGTH () của MySQL có an toàn nhiều byte hay không?


Cũng giống như hàm LENGTH (), hàm MySQL BIT_LENGTH () không phải là một hàm an toàn nhiều byte. Như chúng ta biết rằng sự khác biệt của kết quả giữa các hàm an toàn nhiều byte, như CHAR_LENGTH () hoặc CHARACTER_LENGTH () và hàm BIT_LENGTH () đặc biệt liên quan đến Unicode, trong đó hầu hết các ký tự được mã hóa thành hai byte hoặc có liên quan đến UTF -8 trong đó số lượng byte thay đổi. Nó được minh họa trong ví dụ dưới đây -

Ví dụ

mysql> Select BIT_LENGTH('tutorialspoint');
+------------------------------+
| BIT_LENGTH('tutorialspoint') |
+------------------------------+
| 112                          |
+------------------------------+
1 row in set (0.00 sec)

Tập kết quả trên cho thấy độ dài bit của chuỗi ‘tutorialspoint’ là 112 vì nó chưa được chuyển đổi sang ký tự Unicode. Truy vấn sau chuyển nó thành ký tự Unicode -

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

Sau khi chuyển đổi chuỗi trong Unicode, nó cho kết quả 224 thay vì 112 vì trong Unicode một ký tự đơn chiếm 2 byte như hình dưới đây -

mysql> Select BIT_LENGTH(@A);
+----------------+
| BIT_LENGTH(@A) |
+----------------+
| 224            |
+----------------+
1 row in set (0.00 sec)