В SQL Server (и Azure), T-SQL DATALENGTH() функцията връща броя на байтовете, използвани за представяне на произволен израз.
Например:
SELECT DATALENGTH('Lit');
Резултат:
3
В този случай има 3 байта в низа Lit .
Това обаче е прост пример. Резултатите могат да изглеждат много различно в зависимост от типа данни.
В горния пример видяхме, че има 3 байта в думата Lit . Това също се случва да е точно колко знака има в низа. Но ако върнем същата дума от колона в база данни, може да получим различен резултат. Например това:
SELECT
ArtistName,
DATALENGTH(ArtistName) AS DataLength
FROM Artists
WHERE ArtistName = 'Lit';
Резултат:
ArtistName DataLength ---------- ---------- Lit 6
В този случай дължината на данните е 6.
Причината за това е, защото в тази конкретна база данни колоната има nvarchar(255) тип данни. nvarchar Типът данни е низ от Unicode, който съхранява 2 байта на знак (което ефективно удвоява дължината на данните). Ако вместо това колоната е използвала varchar(255) той ще има дължина на данните от 3. Ако обаче имаше да кажем, char(25) низът ще има дължина на данните от 25.
Освен това, ако преди това е бил char(25) но след това беше преобразуван в varchar(255) тя пак ще има дължина на данните от 255.
Въпреки това, във всички случаи, LEN() функцията би върнала 3.
Завършващи празни места
DATALENGTH() функцията брои крайните празни места (напр. интервали в края на низа, табулатори, връщане на карета и т.н.).
Пример:
SELECT DATALENGTH('Lit');
Резултат:
4
В този пример просто добавих интервал в края на низа. Това е още една от разликите между LEN() и DATALENGTH() .
Можете да видите примери за LEN() и DATALENGTH() един до друг в LEN() срещу DATALENGTH() .
Тип връщане
DATALENGTH() функцията връща тип данни int , освен ако изразът е varchar(max) , nvarchar(max) или варбинарна(макс.) , като в този случай се връща bigint .