In SQL Server (en Azure), de T-SQL DATALENGTH()
functie geeft het aantal bytes terug dat wordt gebruikt om een uitdrukking weer te geven.
Bijvoorbeeld:
SELECT DATALENGTH('Lit');
Resultaat:
3
In dit geval zijn er 3 bytes in de string Lit
.
Dit is echter een eenvoudig voorbeeld. De resultaten kunnen er heel anders uitzien, afhankelijk van het gegevenstype.
In het bovenstaande voorbeeld zagen we dat er 3 bytes zijn in het woord Lit
. Dit is ook precies het aantal tekens in de string. Maar als we hetzelfde woord uit een kolom in een database retourneren, krijgen we mogelijk een ander resultaat. Bijvoorbeeld dit:
SELECT ArtistName, DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Resultaat:
ArtistName DataLength ---------- ---------- Lit 6
In dit geval is de datalengte 6.
De reden hiervoor is dat in deze specifieke database de kolom een nvarchar(255) heeft data type. De nvarchar gegevenstype is een unicode-tekenreeks, die 2 bytes per teken opslaat (wat in feite de gegevenslengte verdubbelt). Als de kolom in plaats daarvan varchar(255) . had gebruikt het zou een gegevenslengte van 3 hebben. Als het echter had gezegd, char(25) de string zou een datalengte van 25 hebben.
Ook als het eerder char(25) . was geweest maar het werd toen geconverteerd naar varchar(255) het zou nog steeds een gegevenslengte van 255 hebben.
In alle gevallen is de LEN()
functie zou 3 hebben geretourneerd.
Blanco's achterop
De DATALENGTH()
functie telt volgspaties (bijv. spaties aan het einde van de tekenreeks, tabs, regelterugloop, enz.).
Voorbeeld:
SELECT DATALENGTH('Lit ');
Resultaat:
4
In dit voorbeeld heb ik eenvoudig een spatie toegevoegd aan het einde van de string. Dit is weer een van de verschillen tussen LEN()
en DATALENGTH()
.
U kunt voorbeelden zien van LEN()
en DATALENGTH()
naast elkaar in LEN()
vs DATALENGTH()
.
Retourtype
De DATALENGTH()
functie retourneert een gegevenstype van int , tenzij de uitdrukking varchar(max) . is , nvarchar(max) of varbinary(max) , in welk geval het bigint . teruggeeft .