Fungsi MySQL LENGTH() mengukur panjang rentetan dalam "bait", yang bermaksud ia tidak selamat berbilangbait. Perbezaan hasil antara fungsi selamat berbilangbait seperti CHAR_LENGTH() atau CHARACTER_LENGTH() dan fungsi LENGTH() amat berkaitan dengan Unicode, di mana kebanyakan aksara dikodkan dalam dua bait atau kepada UTF-8, Bilangan bait berbeza-beza. . Sebagai contoh, jika rentetan mengandungi empat aksara 2-bait, fungsi LENGTH() mengembalikan 8 dan fungsi CHAR_LENGTH() atau CHARACTER_LENGTH() mengembalikan 4. Seperti yang ditunjukkan dalam contoh di bawah -
mysql> Select LENGTH('tutorialspoint'); +--------------------------+ | LENGTH('tutorialspoint') | +--------------------------+ | 14 | +--------------------------+ 1 row in set (0.00 sec)
Hasil yang ditetapkan di atas menunjukkan bahawa panjang rentetan "tutorialspoint" ialah 14 kerana ia belum ditukar kepada aksara Unikod. Pertanyaan berikut menukarnya kepada aksara Unicode -
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
Selepas menukar rentetan kepada Unicode, hasilnya ialah 28 berbanding 14 kerana dalam Unicode satu aksara mengambil 2 bait seperti yang ditunjukkan di bawah -
mysql> Select LENGTH(@A); +------------+ | LENGTH(@A) | +------------+ | 28 | +------------+ 1 row in set (0.00 sec)
Tetapi CHAR_LENGTH() Keputusan yang diberikan ialah 14 kerana ia adalah fungsi selamat berbilangbait seperti yang ditunjukkan di bawah -
mysql> Select CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+ 1 row in set (0.00 sec)
Atas ialah kandungan terperinci Bagaimanakah fungsi MySQL LENGTH() mengukur panjang rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!