Một trong nhiều hàm trong MySQL là LENGTH()
, trả về độ dài của một chuỗi, được tính bằng byte.
Ví dụ:
SELECT LENGTH('Lit');
Kết quả:
+---------------+ | LENGTH('Lit') | +---------------+ | 3 | +---------------+
Đây là một ví dụ đơn giản và kết quả giống như khi chúng tôi sử dụng CHAR_LENGTH()
hàm số. Tuy nhiên, LENGTH()
hàm có thể trả về các kết quả khác nhau, tùy thuộc vào kiểu dữ liệu.
Loại dữ liệu
Khi bạn truy vấn cơ sở dữ liệu, LENGTH()
hàm có thể trả về một kết quả khác, tùy thuộc vào kiểu dữ liệu. Chuỗi Unicode trả về gấp đôi số byte. Chuỗi UTF-8 có thể khác nhau.
Dưới đây là một ví dụ về việc sử dụng UTF-8:
SELECT LENGTH(_utf8 '€');
Kết quả:
+---------------------+ | LENGTH(_utf8 '€') | +---------------------+ | 3 | +---------------------+
Trong trường hợp này, ký hiệu Euro sử dụng 3 byte.
Trong ví dụ sau, chúng tôi truy vấn một cơ sở dữ liệu. Trong trường hợp này, ArtistName
cột sử dụng varchar (255) kiểu dữ liệu:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Vì vậy, kết quả trông như thế này:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 3 | +--------------------+
Tuy nhiên, nếu chúng tôi thay đổi cột thành ucs2
, mỗi ký tự sẽ được biểu diễn bằng một mã Unicode 2 byte, và do đó kết quả sẽ khác nhau.
Để chứng minh, chúng ta có thể thay đổi bảng như sau:
SELECT LENGTH(ArtistName) ALTER TABLE Artists MODIFY COLUMN ArtistName VARCHAR(255) CHARSET ucs2;
Bây giờ nếu chúng ta truy vấn lại nó:
SELECT LENGTH(ArtistName) FROM Artists WHERE ArtistName = 'Lit';
Kết quả:
+--------------------+ | LENGTH(ArtistName) | +--------------------+ | 6 | +--------------------+
Khoảng trống sau
LENGTH()
hàm đếm khoảng trống ở cuối (chẳng hạn như khoảng trắng ở cuối chuỗi). Vì vậy, nếu chúng ta thêm một khoảng trắng vào cuối ví dụ đầu tiên, chúng ta sẽ nhận được kết quả sau:
SELECT LENGTH('Lit');
Kết quả:
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
Khoảng trống hàng đầu
Chúng tôi nhận được kết quả tương tự với các ô trống ở đầu (ví dụ:khoảng trắng ở đầu chuỗi):
SELECT LENGTH('Lit');
Kết quả:
+----------------+ | LENGTH('Lit ') | +----------------+ | 4 | +----------------+
Transact-SQL (dành cho SQL Server, Azure) có một chức năng tương tự, nhưng trong T-SQL, nó được gọi là DATALENGTH()
.