sql >> Base de Datos >  >> RDS >> Sqlserver

Use COL_LENGTH() para obtener la longitud de una columna en SQL Server

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.