Trong SQL Server (và Azure), T-SQL DATALENGTH()
hàm trả về số byte được sử dụng để biểu diễn bất kỳ biểu thức nào.
Ví dụ:
SELECT DATALENGTH('Lit');
Kết quả:
3
Trong trường hợp này, có 3 byte trong chuỗi Lit
.
Tuy nhiên, đây là một ví dụ đơn giản. Kết quả có thể trông rất khác nhau, tùy thuộc vào loại dữ liệu.
Trong ví dụ trên, chúng ta thấy rằng có 3 byte trong từ Lit
. Điều này cũng xảy ra để biết chính xác có bao nhiêu ký tự trong chuỗi. Nhưng nếu chúng ta trả về cùng một từ đó từ một cột trong cơ sở dữ liệu, chúng ta có thể nhận được một kết quả khác. Ví dụ:điều này:
SELECT ArtistName, DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Kết quả:
ArtistName DataLength ---------- ---------- Lit 6
Trong trường hợp này, độ dài dữ liệu là 6.
Lý do cho điều này là vì, trong cơ sở dữ liệu cụ thể này, cột có nvarchar (255) loại dữ liệu. nvarchar kiểu dữ liệu là một chuỗi unicode, lưu trữ 2 byte cho mỗi ký tự (có thể tăng gấp đôi độ dài dữ liệu một cách hiệu quả). Nếu thay vào đó, cột đã sử dụng varchar (255) nó sẽ có độ dài dữ liệu là 3. Tuy nhiên, nếu nó nói rằng, char (25) chuỗi sẽ có độ dài dữ liệu là 25.
Ngoài ra, nếu trước đây nó là char (25) nhưng sau đó nó được chuyển đổi thành varchar (255) nó sẽ vẫn có độ dài dữ liệu là 255.
Tuy nhiên, trong mọi trường hợp, LEN()
hàm sẽ trả về 3.
Khoảng trống sau
DATALENGTH()
hàm đếm khoảng trống ở cuối (ví dụ:khoảng trắng ở cuối chuỗi, tab, dấu xuống dòng, v.v.).
Ví dụ:
SELECT DATALENGTH('Lit');
Kết quả:
4
Trong ví dụ này, tôi chỉ cần thêm một khoảng trắng vào cuối chuỗi. Đây là một trong những điểm khác biệt giữa LEN()
và DATALENGTH()
.
Bạn có thể xem các ví dụ về LEN()
và DATALENGTH()
cạnh nhau trong LEN()
so với DATALENGTH()
.
Loại trả lại
DATALENGTH()
hàm trả về kiểu dữ liệu là int , trừ khi biểu thức là varchar (max) , nvarchar (tối đa) hoặc varbinary (max) , trong trường hợp đó, nó trả về bigint .