Kedua-dua fungsi ini ialah fungsi rentetan dan mengembalikan bilangan aksara yang terdapat dalam rentetan. Tetapi mereka berbeza kerana fungsi CHAR_LENGTH() mengukur panjang rentetan dalam "aksara" manakala fungsi LENGTH() mengukur panjang rentetan dalam "bait". Dalam erti kata lain, kita boleh mengatakan bahawa fungsi CHAR_LENGTH() adalah selamat berbilang bait, iaitu ia mengabaikan sama ada aksara adalah bait tunggal atau berbilang bait. Contohnya, jika rentetan mengandungi empat aksara 2-bait, LENGTH().
Fungsi ini akan mengembalikan 8, manakala fungsi CHAR_LENGTH() akan mengembalikan 4. Dalam pengertian ini, kita boleh mengatakan bahawa CHAR_LENGTH() memberikan hasil yang lebih tepat daripada fungsi LENGTH().
Perbezaan ini amat berkaitan dengan Unicode, di mana kebanyakan aksara dikodkan dalam dua bait, atau kepada UTF-8, di mana bilangan bait berbeza-beza. Contoh di bawah menunjukkan -
Dalam contoh di bawah, pertama, rentetan 'Gaurav' ditukar kepada ucs2 strong>, iaitu set aksara Unicode, 2-bait. Kemudian kita boleh melihat perbezaan dalam set hasil, iaitu LENGTH() mengembalikan panjang dalam bait, manakala CHAR_LENGTH() mengembalikan panjang dalam aksara.
mysql> SET @A = CONVERT('Gaurav' USING ucs2); Query OK, 0 rows affected (0.15 sec) mysql> Select Char_length(@A), LENGTH(@A); +-----------------+------------+ | Char_length(@A) | LENGTH(@A) | +-----------------+------------+ | 6 | 12 | +-----------------+------------+ 1 row in set (0.03 sec)
Kini, dalam contoh di bawah, kami menggunakan aksara khas dalam UTF-8, bilangan bait dalam set aksara berbeza-beza. Kita kemudian boleh melihat perbezaan dari set keputusan.
rreeeeAtas ialah kandungan terperinci Apakah perbezaan antara fungsi MySQL LENGTH() dan CHAR_LENGTH()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!