Trong MySQL, CHAR_LENGTH()
hàm trả về độ dài của một chuỗi, được đo bằng ký tự. MySQL cũng có CHARACTER_LENGTH()
, là từ đồng nghĩa với CHAR_LENGTH()
.
Đây là một ví dụ:
SELECT CHAR_LENGTH('Lit');
Và đây là kết quả:
+--------------------+ | CHAR_LENGTH('Lit') | +--------------------+ | 3 | +--------------------+
Khoảng trống sau
Lưu ý rằng CHAR_LENGTH()
bao gồm các khoảng trống ở cuối (ví dụ:khoảng trắng ở cuối chuỗi) trong các phép tính của nó.
Vì vậy, nếu chúng ta thêm khoảng trắng vào cuối ví dụ trước:
SELECT CHAR_LENGTH('Lit');
Đây là kết quả:
+---------------------+ | CHAR_LENGTH('Lit ') | +---------------------+ | 4 | +---------------------+
Nhưng chúng tôi luôn có thể xóa khoảng trắng ở cuối đó bằng cách thêm TRIM()
chức năng vào hỗn hợp:
SELECT CHAR_LENGTH(TRIM('Lit '));
Đây là kết quả:
+---------------------------+ | CHAR_LENGTH(TRIM('Lit ')) | +---------------------------+ | 3 | +---------------------------+
Khoảng trống hàng đầu
Điều này cũng tương tự với các ô trống ở đầu. Vì vậy, nếu chúng ta thêm khoảng trắng vào start của chuỗi thay vào đó:
SELECT CHAR_LENGTH('Lit');
Chúng tôi nhận được cùng một kết quả:
+---------------------+ | CHAR_LENGTH('Lit ') | +---------------------+ | 4 | +---------------------+
Loại dữ liệu
Không quan trọng loại dữ liệu mà chuỗi được lưu trữ, nó vẫn sẽ trả về kết quả tương tự. Điều này trái ngược với LENGTH()
, sẽ trả về gấp đôi số ký tự trong trường hợp dữ liệu đang được lưu trữ dưới dạng chuỗi Unicode.
Trong ví dụ sau, cột ArtistName sử dụng varchar (255) :
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Đây là kết quả:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Và nếu chúng tôi sửa đổi ArtistName
cột sử dụng Unicode:
ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) unicode;
Và chạy lại cùng một truy vấn:
SELECT CHAR_LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Chúng tôi vẫn nhận được cùng một kết quả:
+-------------------------+ | CHAR_LENGTH(ArtistName) | +-------------------------+ | 3 | +-------------------------+
Tuy nhiên, nếu chúng tôi đã sử dụng LENGTH()
, kết quả sẽ là 6. Điều này là do chuỗi Unicode lưu trữ 2 byte cho mỗi ký tự và LENGTH()
hàm trả về độ dài được đo bằng byte.