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

ฟังก์ชัน MySQL LENGTH() วัดความยาวสตริงได้อย่างไร


MySQL LENGTH() ฟังก์ชันจะวัดความยาวของสตริงเป็น 'ไบต์' ซึ่งหมายความว่าไม่ปลอดภัยสำหรับมัลติไบต์ ความแตกต่างของผลลัพธ์ระหว่างฟังก์ชันความปลอดภัยแบบหลายไบต์ เช่น CHAR_LENGTH() หรือ CHARACTER_LENGTH() และฟังก์ชัน LENGTH() ที่เกี่ยวข้องโดยเฉพาะกับ Unicode ซึ่งอักขระส่วนใหญ่ถูกเข้ารหัสเป็นสองไบต์หรือเกี่ยวข้องกับ UTF-8 โดยที่ จำนวนไบต์แตกต่างกันไป ตัวอย่างเช่น หากสตริงมีอักขระ 2 ไบต์สี่ตัว ฟังก์ชัน LENGTH() จะส่งกลับ 8 ตัว ในขณะที่ฟังก์ชัน CHAR_LENGTH() หรือ CHARACTER_LENGTH() จะคืนค่า 4 ตัว ซึ่งแสดงให้เห็นในตัวอย่างด้านล่าง −

ตัวอย่าง

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

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

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

หลังจากแปลงสตริงใน Unicode จะให้ผลลัพธ์เป็น 28 แทนที่จะเป็น 14 เนื่องจากใน Unicode อักขระตัวเดียวจะใช้เวลา 2 ไบต์ดังที่แสดงด้านล่าง -

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

แต่ CHAR_LENGTH() ให้ผลลัพธ์เป็น 14 เนื่องจากเป็นฟังก์ชันที่ปลอดภัยแบบหลายไบต์ดังที่แสดงด้านล่าง -

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