Trong MariaDB, ORD()
là một hàm chuỗi tích hợp trả về mã ký tự số của ký tự ngoài cùng bên trái của đối số chuỗi của nó.
ORD()
hàm có thể xử lý các ký tự nhiều byte. Điều này trái ngược với ASCII()
, chỉ xử lý các ký tự byte đơn (8 bit).
Cú pháp
Cú pháp như sau:
ORD(str)
Ở đâu str
là đối số chuỗi.
ORD()
sẽ chỉ trả về mã số của ngoài cùng bên trái ký tự của chuỗi này.
Nếu ký tự ngoài cùng bên trái là ký tự nhiều byte, ORD()
sử dụng công thức sau để tính toán kết quả của nó:
(1st byte code)
+ (2nd byte code x 256)
+ (3rd byte code x 256 x 256) ...
Ví dụ
Dưới đây là một ví dụ đơn giản để chứng minh:
SELECT ORD('H');
Kết quả:
+ ---------- + | ORD ('H') | + ---------- + | 72 | + ---------- +
Như đã đề cập, ORD()
chỉ trả về mã của ngoài cùng bên trái tính cách. Do đó, điều sau tạo ra cùng một kết quả:
SELECT ORD('Homer');
Kết quả:
+ -------------- + | ORD ('Homer') | + -------------- + | 72 | + -------------- +
Để chứng minh thêm điều này, hãy lấy mã từ mỗi chữ cái trong chuỗi trên:
SELECT
ORD('H'),
ORD('o'),
ORD('m'),
ORD('e'),
ORD('r');
Kết quả:
+ ---------- + ---------- + ---------- + ---------- + - -------- + | ORD ('H') | ORD ('o') | ORD ('m') | ORD ('e') | ORD ('r') | + ---------- + ---------- + ---------- + --------- - + ---------- + | 72 | 111 | 109 | 101 | 114 | + ---------- + ---------- + ---------- + ---------- + --- ------- +
Ký tự nhiều byte
Dưới đây là một ví dụ sử dụng ký tự nhiều byte:
SELECT ORD('©');
Kết quả:
+ ----------- + | ORD ('©') | + ----------- + | 49833 | + ----------- +
Phân biệt chữ hoa chữ thường
Các chữ cái viết hoa có giá trị ASCII khác với giá trị chữ thường tương đương của chúng.
Ví dụ:
SELECT
ORD('H'),
ORD('h');
Kết quả:
+ ---------- + ---------- + | ORD ('H') | ORD ('h') | + ---------- + ---------- + | 72 | 104 | + ---------- + ---------- +
Một ví dụ về cơ sở dữ liệu
Đây là một ví dụ về việc sử dụng ORD()
trong một truy vấn cơ sở dữ liệu:
USE PetHouse;
SELECT
PetName,
ORD(PetName) AS 'ASCII value of leftmost character'
FROM Pets;
Kết quả:
+ --------- + ----------------------------------- + | PetName | Giá trị ASCII của ký tự ngoài cùng bên trái | + --------- + --------------------------------- - + | Bông xù | 70 || Tìm nạp | 70 || Cào | 83 || Wag | 87 || Tweet | 84 || Bông xù | 70 || Vỏ cây | 66 || Meo meo | 77 | + --------- + ----------------------------------- +
Ký tự ngoài cùng bên phải
Ở đây, tôi sử dụng RIGHT()
hàm để trả về ký tự ngoài cùng bên phải của mỗi tên vật nuôi, sau đó sử dụng lại ký tự đó với ORD()
hàm trả về giá trị ASCII cho ký tự đó.
USE PetHouse;
SELECT
PetName,
RIGHT(PetName, 1) 'Rightmost character',
ORD(RIGHT(PetName, 1)) 'ASCII code'
FROM Pets;
Kết quả:
+ --------- + --------------------- + ------------ + | PetName | Nhân vật ngoài cùng bên phải | Mã ASCII | + --------- + --------------------- + ------------ + | Bông xù | y | 121 || Tìm nạp | h | 104 || Cào | h | 104 || Wag | g | 103 || Tweet | t | 116 || Bông xù | y | 121 || Vỏ cây | k | 107 || Meo meo | w | 119 | + --------- + --------------------- + ------------ +Chuỗi trống
Cung cấp một chuỗi trống sẽ dẫn đến
0
được trả lại.SELECT ORD('');
Kết quả:
+ --------- + | ORD ('') | + --------- + | 0 | + --------- +Giá trị rỗng
Cung cấp
null
kết quả lànull
được trả lại.SELECT ORD(null);
Kết quả:
+ ----------- + | ORD (null) | + ----------- + | KHÔNG | + ----------- +