In SQL Server können Sie COL_LENGTH()
verwenden Funktion, um die Länge einer Spalte zu erhalten. Genauer gesagt gibt die Funktion die definierte Länge der Spalte in Bytes zurück.
Die Funktion akzeptiert zwei Argumente:den Tabellennamen und den Spaltennamen.
Beispiel 1 – Grundlegende Verwendung
Hier ist ein Beispiel zur Veranschaulichung.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 510 | +----------+
Beispiel 2 – Falsche Datenbank?
Wenn Sie ein NULL-Ergebnis erhalten, prüfen Sie, ob Sie die richtige Datenbank abfragen.
Das vorherige Beispiel verwendet eine Datenbank namens Music
und diese Datenbank hat eine Tabelle und Spalte mit diesen Namen. Wenn die Datenbank keine Tabellen-/Spaltenkombination wie angegeben hat, ist das Ergebnis NULL
.
Folgendes passiert, wenn ich die falsche Datenbank abfrage:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Ergebnis:
+----------+ | Result | |----------| | NULL | +----------+
Beispiel 3 – Einige weitere Spalten
Hier ist ein Beispiel, das mehr Spalten aus derselben Tabelle zurückgibt.
USE Music; DECLARE @table_name nvarchar(50) = 'dbo.Artists'; SELECT COL_LENGTH(@table_name, 'ArtistId') AS ArtistId, COL_LENGTH(@table_name, 'ArtistName') AS ArtistName, COL_LENGTH(@table_name, 'ActiveFrom') AS ActiveFrom, COL_LENGTH(@table_name, 'CountryId') AS CountryId;
Ergebnis:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Beispiel 4 – Abfragen von sys.columns
In diesem Beispiel vergleiche ich die Ergebnisse mit max_length
Spalte der sys.columns
Systemansicht.
SELECT OBJECT_NAME(object_id) AS [Table Name], name AS [Column Name], max_length, COL_LENGTH(OBJECT_NAME(object_id), name) AS [COL_LENGTH()] FROM sys.columns WHERE name IN ('ArtistId', 'ArtistName', 'ActiveFrom', 'CountryId');
Ergebnis:
+-------------------+---------------+--------------+----------------+ | Table Name | Column Name | max_length | COL_LENGTH() | |-------------------+---------------+--------------+----------------| | ufn_AlbumsByGenre | ArtistName | 510 | 510 | | Artists | ArtistId | 4 | 4 | | Artists | ArtistName | 510 | 510 | | Artists | ActiveFrom | 3 | 3 | | Artists | CountryId | 4 | 4 | | Albums | ArtistId | 4 | 4 | | Country | CountryId | 4 | 4 | | RockAlbums | ArtistName | 510 | 510 | | JazzAlbums | ArtistName | 510 | 510 | | BluesAlbums | ArtistName | 510 | 510 | +-------------------+---------------+--------------+----------------+
Die hier zurückgegebenen Spalten und ihre jeweiligen Längen stammen aus mehreren Tabellen. Im Fall von ArtistId
, gibt es einen Primärschlüssel dieses Namens in den Artists
Tabelle und einem gleichnamigen Fremdschlüssel in den Albums
Tisch. Diese Abfrage gibt auch Spalten aus drei Ansichten sowie eine Tabellenwertfunktion zurück.