I SQL Server (og Azure), T-SQL DATALENGTH()
funktion returnerer antallet af bytes brugt til at repræsentere ethvert udtryk.
For eksempel:
SELECT DATALENGTH('Lit');
Resultat:
3
I dette tilfælde er der 3 bytes i strengen Lit
.
Dette er dog et simpelt eksempel. Resultaterne kan se meget forskellige ud, afhængigt af datatypen.
I ovenstående eksempel så vi, at der er 3 bytes i ordet Lit
. Dette er tilfældigvis også præcis, hvor mange tegn der er i strengen. Men hvis vi returnerer det samme ord fra en kolonne i en database, kan vi få et andet resultat. For eksempel dette:
SELECT ArtistName, DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Resultat:
ArtistName DataLength ---------- ---------- Lit 6
I dette tilfælde er datalængden 6.
Årsagen til dette er, at kolonnen i denne særlige database har en nvarchar(255) datatype. nvarchar datatype er en unicode-streng, som gemmer 2 bytes pr. tegn (hvilket effektivt fordobler datalængden). Hvis kolonnen i stedet havde brugt varchar(255) den ville have en datalængde på 3. Men hvis den havde sige, char(25) strengen ville have en datalængde på 25.
Også hvis det tidligere havde været char(25) men det blev derefter konverteret til varchar(255) den ville stadig have en datalængde på 255.
Men i alle tilfælde er LEN()
funktion ville have returneret 3.
Tilsluttede emner
DATALENGTH()
Funktionen tæller efterstillede blanktegn (f.eks. mellemrum for enden af strengen, tabulatorer, vognretur osv.).
Eksempel:
SELECT DATALENGTH('Lit');
Resultat:
4
I dette eksempel tilføjede jeg blot et mellemrum til enden af strengen. Dette er endnu en af forskellene mellem LEN()
og DATALENGTH()
.
Du kan se eksempler på LEN()
og DATALENGTH()
side om side i LEN()
vs DATALENGTH()
.
Returtype
DATALENGTH()
funktion returnerer en datatype int , medmindre udtrykket er varchar(max) , nvarchar(max) eller varbinary(max) , i hvilket tilfælde den returnerer bigt .