Trong MariaDB, CHARACTER_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ự.
CHARACTER_LENGTH()
thực sự là một từ đồng nghĩa với CHAR_LENGTH()
, vì vậy bạn có thể sử dụng.
Cú pháp
Cú pháp như sau:
CHARACTER_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 CHARACTER_LENGTH('Cat');
Kết quả:
+ ------------------------- + | CHARACTER_LENGTH ('Mèo') | + ------------------------- + | 3 | + ------------------------- +
Trong trường hợp này, chuỗi dài ba ký tự và do đó chúng tôi nhận được 3
.
Không phải chuỗi
Nếu đối số không phải là một chuỗi, nó sẽ được chuyển đổi thành một chuỗi.
Dưới đây là một ví dụ khác sử dụng một số:
SELECT CHARACTER_LENGTH(1234);
Kết quả:
+ ------------------------ + | CHARACTER_LENGTH (1234) | + ------------------------ + | 4 | + ------------------------ +
So sánh với CHAR_LENGTH()
Như đã đề cập, CHARACTER_LENGTH()
là từ đồng nghĩa với CHAR_LENGTH()
. Đây là nó so với CHAR_LENGTH()
:
SELECT
CHARACTER_LENGTH(1234),
CHAR_LENGTH(1234);
Kết quả:
+ ------------------------ + ------------------- + | CHARACTER_LENGTH (1234) | CHAR_LENGTH (1234) | + ------------------------ + ------------------- + | 4 | 4 | + ------------------------ + ------------------- +Ký tự nhiều byte
CHARACTER_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ó ở chế độ Oracle, trong trường hợp đó nó giống nhưCHARACTER_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 CHARACTER_LENGTH('อ'), LENGTH('อ'), BIT_LENGTH('อ');
Kết quả:
+ ------------------------- + --------------- + ---- --------------- + | CHARACTER_LENGTH ('อ') | CHIỀU DÀI ('อ') | BIT_LENGTH ('อ') | + ------------------------- + --------------- + ------------------- + | 1 | 3 | 24 | + ------------------------- + --------------- + ----- -------------- +Ký tự tiếng Thái này (
อ
) sử dụng 3 byte.CHARACTER_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ưCHARACTER_LENGTH()
và trả về1
.Đối số rỗng
Chuyển
null
trả vềnull
:SELECT CHARACTER_LENGTH(null);
Kết quả:
+ ------------------------ + | CHARACTER_LENGTH (null) | + ------------------------ + | NULL | + ------------------------ +Thiếu đối số
Đang gọi
CHARACTER_LENGTH()
mà không chuyển đối số dẫn đến lỗi:SELECT CHARACTER_LENGTH();
Kết quả:
ERROR 1582 (42000):Số lượng tham số không chính xác trong lệnh gọi hàm gốc 'CHARACTER_LENGTH'