I SQL Server (och Azure), T-SQL DATALENGTH()
funktion returnerar antalet byte som används för att representera ett uttryck.
Till exempel:
SELECT DATALENGTH('Lit');
Resultat:
3
I det här fallet finns det 3 byte i strängen Lit
.
Detta är dock ett enkelt exempel. Resultaten kan se mycket olika ut, beroende på datatyp.
I exemplet ovan såg vi att det finns 3 byte i ordet Lit
. Detta råkar också vara exakt hur många tecken som finns i strängen. Men om vi returnerar samma ord från en kolumn i en databas kan vi få ett annat resultat. Till exempel detta:
SELECT ArtistName, DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Resultat:
ArtistName DataLength ---------- ---------- Lit 6
I detta fall är datalängden 6.
Anledningen till detta är att kolumnen i just den här databasen har en nvarchar(255) data typ. nvarchar datatypen är en unicode-sträng som lagrar 2 byte per tecken (vilket i praktiken fördubblar datalängden). Om kolumnen istället hade använt varchar(255) den skulle ha en datalängd på 3. Men om den hade säg, char(25) strängen skulle ha en datalängd på 25.
Dessutom, om det tidigare hade varit char(25) men den konverterades sedan till varchar(255) den skulle fortfarande ha en datalängd på 255.
Men i alla fall, LEN()
funktion skulle ha returnerat 3.
Avslutande ämnen
DATALENGTH()
Funktionen räknar efterföljande blanksteg (t.ex. mellanslag i slutet av strängen, tabbar, vagnretur, etc).
Exempel:
SELECT DATALENGTH('Lit ');
Resultat:
4
I det här exemplet lade jag helt enkelt till ett mellanslag i slutet av strängen. Detta är ytterligare en av skillnaderna mellan LEN()
och DATALENGTH()
.
Du kan se exempel på LEN()
och DATALENGTH()
sida vid sida i LEN()
kontra DATALENGTH()
.
Returtyp
DATALENGTH()
funktion returnerar datatypen int , om inte uttrycket är varchar(max) , nvarchar(max) eller varbinary(max) , i så fall returnerar den bigint .