sql >> Database >  >> RDS >> Sqlserver

Gebruik COL_LENGTH() om de lengte van een kolom in SQL Server te krijgen

In SQL Server kunt u de COL_LENGTH() . gebruiken functie om de lengte van een kolom te krijgen. Meer specifiek geeft de functie de gedefinieerde lengte van de kolom terug, in bytes.

De functie accepteert twee argumenten:de tabelnaam en de kolomnaam.

Voorbeeld 1 – Basisgebruik

Hier is een voorbeeld om te demonstreren.

USE Music;
SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| 510      |
+----------+

Voorbeeld 2 – Verkeerde database?

Als je een NULL-resultaat krijgt, controleer dan of je de juiste database opvraagt.

Het vorige voorbeeld gebruikt een database genaamd Music en die database heeft een tabel en kolom met die namen. Als de database geen tabel/kolomcombinatie heeft zoals gespecificeerd, is het resultaat NULL .

Dit is wat er gebeurt als ik de verkeerde database doorzoek:

USE WideWorldImportersDW;
SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;

Resultaat:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Voorbeeld 3 – Nog enkele kolommen

Hier is een voorbeeld dat meer kolommen uit dezelfde tabel retourneert.

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;

Resultaat:

+------------+--------------+--------------+-------------+
| ArtistId   | ArtistName   | ActiveFrom   | CountryId   |
|------------+--------------+--------------+-------------|
| 4          | 510          | 3            | 4           |
+------------+--------------+--------------+-------------+

Voorbeeld 4 – Opvragen van sys.columns

In dit voorbeeld vergelijk ik de resultaten met de max_length kolom van de sys.columns systeemweergave.

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');

Resultaat:

+-------------------+---------------+--------------+----------------+
| 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            |
+-------------------+---------------+--------------+----------------+

De kolommen en hun respectieve lengtes die hier worden geretourneerd, zijn afkomstig uit meerdere tabellen. In het geval van ArtistId , er is een primaire sleutel van deze naam in de Artists tabel en een refererende sleutel met dezelfde naam in de Albums tafel. Deze query retourneert ook kolommen van drie weergaven, evenals een functie met tabelwaarde.


  1. SQL Server UNION - Wat is het standaard ORDER BY-gedrag?

  2. String aaneenschakeling in MySQL

  3. MySQL-prestaties:MySQL/MariaDB-indexen

  4. MySQL SELECT afgelopen dagen?