En SQL Server, puede usar COL_LENGTH()
función para obtener la longitud de una columna. Más específicamente, la función devuelve la longitud definida de la columna, en bytes.
La función acepta dos argumentos:el nombre de la tabla y el nombre de la columna.
Ejemplo 1:uso básico
Aquí hay un ejemplo para demostrarlo.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultado:
+----------+ | Result | |----------| | 510 | +----------+
Ejemplo 2:¿Base de datos incorrecta?
Si obtiene un resultado NULL, compruebe que está consultando la base de datos correcta.
El ejemplo anterior usa una base de datos llamada Music
y esa base de datos tiene una tabla y una columna de esos nombres. Si la base de datos no tiene una combinación de tabla/columna como se especifica, el resultado es NULL
.
Esto es lo que sucede si consulto la base de datos incorrecta:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Resultado:
+----------+ | Result | |----------| | NULL | +----------+
Ejemplo 3:algunas columnas más
Aquí hay un ejemplo que devuelve más columnas de la misma tabla.
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 | +------------+--------------+--------------+-------------+
Ejemplo 4:consultar sys.columns
En este ejemplo comparo los resultados con el max_length
columna de sys.columns
vista del 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 | +-------------------+---------------+--------------+----------------+
Las columnas y sus respectivas longitudes devueltas aquí provienen de varias tablas. En el caso de ArtistId
, hay una clave principal de este nombre en Artists
tabla y una clave foránea del mismo nombre en los Albums
mesa. Esta consulta también devuelve columnas de tres vistas, así como una función con valores de tabla.