I SQL Server kan du använda COL_LENGTH()
funktion för att få längden på en kolumn. Mer specifikt returnerar funktionen den definierade längden på kolumnen, i byte.
Funktionen accepterar två argument:tabellnamnet och kolumnnamnet.
Exempel 1 – Grundläggande användning
Här är ett exempel att visa.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultat:
+----------+ | Result | |----------| | 510 | +----------+
Exempel 2 – Fel databas?
Om du får ett NULL-resultat, kontrollera att du frågar efter rätt databas.
Det föregående exemplet använder en databas som heter Music
och den databasen har en tabell och kolumn med dessa namn. Om databasen inte har en tabell/kolumnkombination som specificerats är resultatet NULL
.
Så här händer om jag frågar fel databas:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultat:
+----------+ | Result | |----------| | NULL | +----------+
Exempel 3 – Några fler kolumner
Här är ett exempel som returnerar fler kolumner från samma tabell.
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 | +------------+--------------+--------------+-------------+
Exempel 4 – Fråga sys.columns
I det här exemplet jämför jag resultaten med max_length
kolumnen i sys.columns
systemvy.
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 | +-------------------+---------------+--------------+----------------+
Kolumnerna och deras respektive längder som returneras här är från flera tabeller. I fallet med ArtistId
, det finns en primärnyckel med detta namn i Artists
tabell och en främmande nyckel med samma namn i Albums
tabell. Den här frågan råkar också returnera kolumner från tre vyer, såväl som en tabellvärderad funktion.