Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво е DATALENGTH() в SQL Server?

В 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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разположите приложение с база данни на sql сървър на клиенти

  2. Създайте функция с таблично значение в SQL Server

  3. Какво е Multi Dimension OLAP CUBE и дайте примерен куб с повече от 3 измерения

  4. Ефект на подсказката NOLOCK в операторите SELECT

  5. да мигрирате данни от MS SQL към PostgreSQL?