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 .