V SQL Server můžete použít COL_LENGTH()
funkce k získání délky sloupce. Přesněji řečeno, funkce vrací definovanou délku sloupce v bajtech.
Funkce přijímá dva argumenty:název tabulky a název sloupce.
Příklad 1 – Základní použití
Zde je příklad k demonstraci.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Výsledek:
+----------+ | Result | |----------| | 510 | +----------+
Příklad 2 – Špatná databáze?
Pokud dostanete výsledek NULL, zkontrolujte, zda se dotazujete na správnou databázi.
Předchozí příklad používá databázi s názvem Music
a tato databáze má tabulku a sloupec těchto jmen. Pokud databáze nemá zadanou kombinaci tabulky/sloupce, výsledek je NULL
.
Zde je to, co se stane, když zadám dotaz na nesprávnou databázi:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Výsledek:
+----------+ | Result | |----------| | NULL | +----------+
Příklad 3 – Několik dalších sloupců
Zde je příklad, který vrací více sloupců ze stejné tabulky.
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;
Výsledek:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Příklad 4 – Dotazování na sys.columns
V tomto příkladu porovnávám výsledky s max_length
sloupec sys.columns
systémový pohled.
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');
Výsledek:
+-------------------+---------------+--------------+----------------+ | 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 | +-------------------+---------------+--------------+----------------+
Zde vrácené sloupce a jejich příslušné délky pocházejí z více tabulek. V případě ArtistId
, je primární klíč tohoto jména v Artists
tabulky a cizího klíče stejného jména v Albums
stůl. Tento dotaz také náhodou vrací sloupce ze tří zobrazení a také funkci s hodnotou tabulky.