Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ฟังก์ชัน BIT_LENGTH() ใน MySQL เป็น Multi-byte Safe หรือไม่


เช่นเดียวกับฟังก์ชัน LENGTH() ฟังก์ชัน BIT_LENGTH() ของ MySQL ไม่ใช่ฟังก์ชัน Multi-byte Safe ความแตกต่างของผลลัพธ์ระหว่างฟังก์ชัน Multi-byte Safe เช่น CHAR_LENGTH() หรือ CHARACTER_LENGTH() และ BIT_LENGTH() มีความเกี่ยวข้องอย่างยิ่งสำหรับ Unicode ซึ่งตัวอักษรส่วนใหญ่ถูกเข้ารหัสใน 2 ไบต์ หรือเกี่ยวข้องกับ UTF-8 ที่จำนวนไบต์แตกต่างกัน แสดงในตัวอย่างด้านล่าง:

ตัวอย่าง

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

ชุดผลลัพธ์ข้างต้นแสดงว่าความยาวบิตของสตริง 'tutorialspoint' คือ 112 เพราะมันยังไม่ถูกแปลงเป็น Unicode Character คำสั่งต่อไปนี้แปลงมันเป็น Unicode Character:

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)