Trong MariaDB, CHAR_LENGTH()
là một hàm chuỗi tích hợp trả về độ dài của đối số chuỗi đã cho, được đo bằng ký tự.
Cú pháp
Cú pháp như sau:
CHAR_LENGTH(str)
Ở đâu str
là chuỗi mà độ dài sẽ được trả về.
Ví dụ
Đây là một ví dụ cơ bản:
SELECT CHAR_LENGTH('Splash');
Kết quả:
+-----------------------+ | CHAR_LENGTH('Splash') | +-----------------------+ | 6 | +-----------------------+
Ký tự nhiều byte
CHAR_LENGTH()
hàm đếm mỗi ký tự là một ký tự duy nhất, bất kể nó sử dụng bao nhiêu byte. Do đó, các ký tự sử dụng hai, ba hoặc thậm chí bốn byte sẽ vẫn được tính là một ký tự.
Điều này trái ngược với các hàm như LENGTH()
, trả về số byte (trừ khi nó ở trong chế độ Oracle, trong trường hợp đó nó thực hiện tương tự như CHAR_LENGTH()
- trả về số ký tự). Nó cũng trái ngược với các hàm như BIT_LENGTH()
trả về số bit trong một chuỗi.
Dưới đây là một ví dụ so sánh các chức năng này:
SELECT
CHAR_LENGTH('©'),
LENGTH('©'),
BIT_LENGTH('©');
Kết quả:
+-------------------+--------------+------------------+ | CHAR_LENGTH('©') | LENGTH('©') | BIT_LENGTH('©') | +-------------------+--------------+------------------+ | 1 | 2 | 16 | +-------------------+--------------+------------------+
Biểu tượng bản quyền (©
) sử dụng hai byte. CHAR_LENGTH()
trả về 1, vì nó vẫn chỉ là một ký tự duy nhất. LENGTH()
và BIT_LENGTH()
mặt khác, trả về số byte và số bit tương ứng.
Ví dụ này được thực hiện bằng SQL_MODE
mặc định . Như đã đề cập, nếu nó ở chế độ Oracle, LENGTH()
sẽ hoạt động giống như CHAR_LENGTH()
và trả về 1
.
Đối số rỗng
Chuyển null
trả về null
:
SELECT CHAR_LENGTH(null);
Kết quả:
+-------------------+ | CHAR_LENGTH(null) | +-------------------+ | NULL | +-------------------+
Thiếu đối số
Đang gọi CHAR_LENGTH()
mà không chuyển đối số dẫn đến lỗi:
SELECT CHAR_LENGTH();
Kết quả:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CHAR_LENGTH'
Đồng thời xem CHARACTER_LENGTH()
hàm, là từ đồng nghĩa với CHAR_LENGTH()
.