sql >> Databáze >  >> RDS >> Sqlserver

Co je DATALENGTH() v SQL Server?

V SQL Server (a Azure) T-SQL DATALENGTH() funkce vrací počet bajtů použitých k reprezentaci jakéhokoli výrazu.

Například:

SELECT DATALENGTH('Lit');

Výsledek:

3

V tomto případě jsou v řetězci Lit 3 bajty .

Toto je však jednoduchý příklad. Výsledky mohou vypadat velmi odlišně v závislosti na typu dat.

Ve výše uvedeném příkladu jsme viděli, že slovo Lit obsahuje 3 bajty . To je také přesně to, kolik znaků je v řetězci. Ale pokud vrátíme stejné slovo ze sloupce v databázi, můžeme získat jiný výsledek. Například toto:

SELECT 
    ArtistName, 
    DATALENGTH(ArtistName) AS DataLength 
FROM Artists 
WHERE ArtistName = 'Lit';

Výsledek:

ArtistName  DataLength
----------  ----------
Lit         6          

V tomto případě je délka dat 6.

Důvodem je to, že v této konkrétní databázi má sloupec nvarchar(255) datový typ. nvarchar datový typ je řetězec unicode, který ukládá 2 bajty na znak (což efektivně zdvojnásobuje délku dat). Pokud by sloupec místo toho používal varchar(255) měl by délku dat 3. Pokud by však měl  řekněme char(25) řetězec by měl délku dat 25.

Také, pokud předtím byl char(25) ale poté byl převeden na varchar(255) stále by měla délku dat 255.

Ve všech případech však LEN() funkce by vrátila 3.

Koncové mezery

DATALENGTH() funkce počítá koncové mezery (např. mezery na konci řetězce, tabulátory, konce řádku atd.).

Příklad:

SELECT DATALENGTH('Lit ');

Výsledek:

4

V tomto příkladu jsem jednoduše přidal mezeru na konec řetězce. Toto je další z rozdílů mezi LEN() a DATALENGTH() .

Můžete si prohlédnout příklady LEN() a DATALENGTH() vedle sebe v LEN() vs DATALENGTH() .

Typ návratu

DATALENGTH() funkce vrací datový typ int , pokud výraz není  varchar(max)nvarchar(max) nebo varbinary(max) , v takovém případě vrátí bigint .


  1. Jak zastavit/zabít dotaz v postgresql?

  2. Jaký je rozdíl mezi MySQL a SQL?

  3. Zbytek v PostgreSQL, MS SQL Server, MySQL a SQLite

  4. Počítání odkazů na záznam v tabulce pomocí cizích klíčů