No SQL Server, você pode usar o
COL_LENGTH()
função para obter o comprimento de uma coluna. Mais especificamente, a função retorna o comprimento definido da coluna, em bytes. A função aceita dois argumentos:o nome da tabela e o nome da coluna.
Exemplo 1 – Uso básico
Aqui está um exemplo para demonstrar.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultado:
+----------+ | Result | |----------| | 510 | +----------+
Exemplo 2 – Banco de dados incorreto?
Se você obtiver um resultado NULL, verifique se está consultando o banco de dados correto.
O exemplo anterior usa um banco de dados chamado
Music
e esse banco de dados tem uma tabela e uma coluna desses nomes. Se o banco de dados não tiver uma combinação de tabela/coluna conforme especificado, o resultado será NULL
. Aqui está o que acontece se eu consultar o banco de dados errado:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultado:
+----------+ | Result | |----------| | NULL | +----------+
Exemplo 3 – Mais Colunas
Aqui está um exemplo que retorna mais colunas da mesma tabela.
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;
Resultado:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Exemplo 4 – Consultando sys.columns
Neste exemplo, comparo os resultados com o
max_length
coluna do sys.columns
visão do sistema. 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');
Resultado:
+-------------------+---------------+--------------+----------------+ | 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 | +-------------------+---------------+--------------+----------------+
As colunas e seus respectivos comprimentos retornados aqui são de várias tabelas. No caso de
ArtistId
, há uma chave primária com este nome em Artists
tabela e uma chave estrangeira com o mesmo nome nos Albums
tabela. Essa consulta também retorna colunas de três exibições, bem como uma função com valor de tabela.