I SQL Server kan du bruge COL_LENGTH()
funktion for at få længden af en søjle. Mere specifikt returnerer funktionen den definerede længde af kolonnen i bytes.
Funktionen accepterer to argumenter:tabelnavnet og kolonnenavnet.
Eksempel 1 – Grundlæggende brug
Her er et eksempel til at demonstrere.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultat:
+----------+ | Result | |----------| | 510 | +----------+
Eksempel 2 – Forkert database?
Hvis du får et NULL-resultat, skal du kontrollere, at du forespørger på den korrekte database.
Det forrige eksempel bruger en database kaldet Music
og den database har en tabel og kolonne med disse navne. Hvis databasen ikke har en tabel/kolonne kombination som angivet, er resultatet NULL
.
Her er, hvad der sker, hvis jeg forespørger i den forkerte database:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultat:
+----------+ | Result | |----------| | NULL | +----------+
Eksempel 3 – Nogle flere kolonner
Her er et eksempel, der returnerer flere kolonner fra den samme tabel.
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;
Resultat:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Eksempel 4 – Forespørgsel på sys.columns
I dette eksempel sammenligner jeg resultaterne med max_length
kolonne i sys.columns
systemvisning.
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');
Resultat:
+-------------------+---------------+--------------+----------------+ | 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 kolonner og deres respektive længder, der returneres her, er fra flere tabeller. I tilfælde af ArtistId
, er der en primær nøgle med dette navn i Artists
tabel og en fremmednøgle af samme navn i Albums
bord. Denne forespørgsel returnerer også tilfældigvis kolonner fra tre visninger samt en funktion med tabelværdi.