Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

length() vs char_length() trong MySQL?


  • CHAR_LENGTH(): Số ký tự (character count).
  • LENGTH(): Số byte (byte count).

Với ASCII/latin1: 1 ký tự = 1 byte → kết quả giống nhau.
Với Unicode (utf8mb4): 1 ký tự = 2-4 byte → kết quả khác nhau.

Ví dụ ASCII

mysql> SELECT CHAR_LENGTH('John');  -- 4
mysql> SELECT LENGTH('Tim');        -- 3

Ví dụ Unicode

mysql> CREATE TABLE LengthAndCharLengthDemo (
    -> FirstName VARCHAR(200),
    -> SecondName VARCHAR(255) CHARACTER SET ucs2  -- 2 byte/ký tự
    -> );
Query OK, 0 rows affected (0.49 sec)
mysql> INSERT INTO LengthAndCharLengthDemo VALUES('John','Ritter');
Query OK, 1 row affected (0.22 sec)
mysql> SELECT CHAR_LENGTH(FirstName), LENGTH(SecondName)
    -> FROM LengthAndCharLengthDemo
    -> WHERE FirstName='John' AND SecondName='Ritter';
+------------------------+--------------------+
| CHAR_LENGTH(FirstName) | LENGTH(SecondName) |
+------------------------+--------------------+
| 4                      | 12                 |
+------------------------+--------------------+
1 row in set (0.70 sec)

'John' (latin1) = 4 ký tự = 4 byte.
'Ritter' (ucs2) = 6 ký tự × 2 byte = 12 byte.