CHAR() chuyển mã số thành ký tự. Hàm ngược là ASCII() (trả về mã của ký tự đầu tiên) hoặc ORD() (trả về mã ký tự đầu tiên, hỗ trợ multibyte).
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable(Value INT, Value1 CHAR(1), Value2 CHAR(1)); Query OK, 0 rows affected (0.80 sec) mysql> INSERT INTO DemoTable VALUES(65,'A','A'), (97,'a','a'); Query OK, 2 rows affected
Kiểm tra CHAR(), ASCII(), ORD()
mysql> SELECT CHAR(Value), ASCII(Value1), ORD(Value2) FROM DemoTable;
Kết quả:
+-------------+---------------+-------------+ | CHAR(Value) | ASCII(Value1) | ORD(Value2) | +-------------+---------------+-------------+ | A | 65 | 65 | | a | 97 | 97 | +-------------+---------------+-------------+
Phân biệt ASCII() vs ORD():
| Hàm | Mô tả | Multibyte (UTF-8) |
|---|---|---|
| ASCII(str) | Mã ASCII của ký tự đầu tiên (0-255) | Chỉ lấy byte đầu, không đúng với Unicode |
| ORD(str) | Mã Unicode code point của ký tự đầu tiên | Hỗ trợ đúng multibyte |
Ví dụ multibyte: ORD('é') = 233, ASCII('é') = 195 (byte đầu của UTF-8 0xC3 0xA9).
Hàm liên quan: CHAR_LENGTH() (số ký tự), LENGTH() (số byte).