In SQL Server kunt u de COL_LENGTH()
. gebruiken functie om de lengte van een kolom te krijgen. Meer specifiek geeft de functie de gedefinieerde lengte van de kolom terug, in bytes.
De functie accepteert twee argumenten:de tabelnaam en de kolomnaam.
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld om te demonstreren.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultaat:
+----------+ | Result | |----------| | 510 | +----------+
Voorbeeld 2 – Verkeerde database?
Als je een NULL-resultaat krijgt, controleer dan of je de juiste database opvraagt.
Het vorige voorbeeld gebruikt een database genaamd Music
en die database heeft een tabel en kolom met die namen. Als de database geen tabel/kolomcombinatie heeft zoals gespecificeerd, is het resultaat NULL
.
Dit is wat er gebeurt als ik de verkeerde database doorzoek:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultaat:
+----------+ | Result | |----------| | NULL | +----------+
Voorbeeld 3 – Nog enkele kolommen
Hier is een voorbeeld dat meer kolommen uit dezelfde tabel retourneert.
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;
Resultaat:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Voorbeeld 4 – Opvragen van sys.columns
In dit voorbeeld vergelijk ik de resultaten met de max_length
kolom van de sys.columns
systeemweergave.
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');
Resultaat:
+-------------------+---------------+--------------+----------------+ | 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 | +-------------------+---------------+--------------+----------------+
De kolommen en hun respectieve lengtes die hier worden geretourneerd, zijn afkomstig uit meerdere tabellen. In het geval van ArtistId
, er is een primaire sleutel van deze naam in de Artists
tabel en een refererende sleutel met dezelfde naam in de Albums
tafel. Deze query retourneert ook kolommen van drie weergaven, evenals een functie met tabelwaarde.