В SQL Server можете да използвате COL_LENGTH()
функция за получаване на дължината на колона. По-конкретно, функцията връща дефинираната дължина на колоната в байтове.
Функцията приема два аргумента:името на таблицата и името на колоната.
Пример 1 – Основна употреба
Ето пример за демонстрация.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Резултат:
+----------+ | Result | |----------| | 510 | +----------+
Пример 2 – Грешна база данни?
Ако получите резултат NULL, проверете дали заявявате правилната база данни.
Предишният пример използва база данни, наречена Music
и тази база данни има таблица и колона с тези имена. Ако базата данни няма комбинация от таблица/колона, както е посочено, резултатът е NULL
.
Ето какво се случва, ако потърся грешна база данни:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Резултат:
+----------+ | Result | |----------| | NULL | +----------+
Пример 3 – Още няколко колони
Ето пример, който връща повече колони от същата таблица.
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;
Резултат:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Пример 4 – Запитване на sys.columns
В този пример сравнявам резултатите с max_length
колона на sys.columns
системен изглед.
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');
Резултат:
+-------------------+---------------+--------------+----------------+ | 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 | +-------------------+---------------+--------------+----------------+
Колоните и съответните им дължини, върнати тук, са от множество таблици. В случай на ArtistId
, има първичен ключ на това име в Artists
таблица и външен ключ със същото име в Albums
маса. Тази заявка също така връща колони от три изгледа, както и функция с таблична стойност.