In SQL Server (und Azure) das T-SQL DATALENGTH()
Die Funktion gibt die Anzahl der Bytes zurück, die zur Darstellung eines beliebigen Ausdrucks verwendet werden.
Zum Beispiel:
SELECT DATALENGTH('Lit');
Ergebnis:
3
In diesem Fall enthält der String Lit
3 Bytes .
Dies ist jedoch ein einfaches Beispiel. Je nach Datentyp können die Ergebnisse sehr unterschiedlich aussehen.
Im obigen Beispiel haben wir gesehen, dass das Wort Lit
3 Bytes enthält . Dies ist auch genau, wie viele Zeichen in der Zeichenfolge enthalten sind. Aber wenn wir dasselbe Wort aus einer Spalte in einer Datenbank zurückgeben, erhalten wir möglicherweise ein anderes Ergebnis. Zum Beispiel dies:
SELECT ArtistName, DATALENGTH(ArtistName) AS DataLength FROM Artists WHERE ArtistName = 'Lit';
Ergebnis:
ArtistName DataLength ---------- ---------- Lit 6
In diesem Fall beträgt die Datenlänge 6.
Der Grund dafür ist, dass die Spalte in dieser speziellen Datenbank ein nvarchar(255) hat Datentyp. Der nvarchar Der Datentyp ist eine Unicode-Zeichenfolge, die 2 Bytes pro Zeichen speichert (was effektiv die Datenlänge verdoppelt). Wenn die Spalte stattdessen varchar(255) verwendet hätte es hätte eine Datenlänge von 3. Wenn es jedoch sagen würde, char(25) der String hätte eine Datenlänge von 25.
Auch, wenn es zuvor char(25) gewesen wäre aber es wurde dann in varchar(255) konvertiert es hätte immer noch eine Datenlänge von 255.
Jedoch in allen Fällen die LEN()
Funktion hätte 3 zurückgegeben.
Nachgestellte Leerzeichen
Die DATALENGTH()
Die Funktion zählt nachgestellte Leerzeichen (z. B. Leerzeichen am Ende der Zeichenfolge, Tabulatoren, Wagenrückläufe usw.).
Beispiel:
SELECT DATALENGTH('Lit ');
Ergebnis:
4
In diesem Beispiel habe ich einfach ein Leerzeichen am Ende der Zeichenfolge hinzugefügt. Dies ist ein weiterer Unterschied zwischen LEN()
und DATALENGTH()
.
Sie können Beispiele für LEN()
sehen und DATALENGTH()
nebeneinander in LEN()
vs DATALENGTH()
.
Rückgabetyp
Die DATALENGTH()
Funktion gibt den Datentyp int zurück , es sei denn, der Ausdruck ist varchar(max) , nvarchar(max) oder varbinary(max) , in diesem Fall wird bigint zurückgegeben .