Nếu bạn đã làm việc với SQL Server trong bất kỳ khoảng thời gian nào, bạn có thể đã gặp phải Datalength()
hàm số. Hàm này trả về số byte được sử dụng để biểu diễn một biểu thức.
Nhưng nếu bạn đã chuyển sang MySQL, bạn có thể đang tìm kiếm một hàm có chức năng tương tự.
Trong MySQL, Length()
về cơ bản, hàm này thực hiện tương tự như T-SQL Datalength()
chức năng trong SQL Server (và Azure). MySQL's Length()
hàm trả về độ dài của một chuỗi, được tính bằng byte.
Ví dụ
Dưới đây là một số ví dụ để minh chứng.
Máy chủ SQL
Đây là một ví dụ cơ bản cho SQL Server (sử dụng T-SQL):
SELECT DATALENGTH('Cat') AS Datalength;
Kết quả:
Datalength ---------- 3
MySQL
Đây là truy vấn tương đương trong MySQL:
SELECT LENGTH('Cat') AS Length;
Kết quả:
+--------+ | Length | +--------+ | 3 | +--------+
Cả hai byte đều đo lường
Nhưng quan trọng nhất, cả hai hàm đều đo lường byte , không phải ký tự . Vì vậy, nếu dữ liệu được lưu trữ dưới dạng chuỗi Unicode, số byte sẽ gấp đôi số ký tự. Điều này là do các chuỗi Unicode sử dụng 2 byte cho mỗi ký tự.
Dưới đây là một ví dụ về việc chạy truy vấn về cơ bản giống với một cột Unicode trong SQL Server, sau đó trong MySQL.
Máy chủ SQL
SELECT DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Kết quả:
DataLength ---------- 6
MySQL
SELECT LENGTH(ArtistName) AS Length FROM Artists WHERE ArtistName = 'Lit';
Kết quả:
+--------+ | Length | +--------+ | 6 | +--------+
Điều quan trọng cần lưu ý là lý do các ví dụ này trả về giá trị 6 là do kiểu dữ liệu được sử dụng trong cơ sở dữ liệu. Cả hai ví dụ cũng có thể trả về 3 nếu dữ liệu không được lưu trữ dưới dạng Unicode.
Ký tự so với byte
Trong ví dụ về SQL Server, nếu chúng tôi đã sử dụng Len()
thay vào đó, nó sẽ trả về 3. Điều này là do Len()
trả về số ký tự - không phải byte.
Tương tự đối với MySQL, nếu chúng ta đã sử dụng Char_Length()
, nó cũng sẽ trả về 3 vì Char_Length()
trả về số ký tự thay vì byte.