sql >> Database teknologi >  >> RDS >> Sqlserver

Brug COL_LENGTH() til at få en kolonnes længde i SQL Server

I SQL Server kan du bruge COL_LENGTH() funktion for at få længden af ​​en søjle. Mere specifikt returnerer funktionen den definerede længde af kolonnen i bytes.

Funktionen accepterer to argumenter:tabelnavnet og kolonnenavnet.

Eksempel 1 – Grundlæggende brug

Her er et eksempel til at demonstrere.

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

Resultat:

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

Eksempel 2 – Forkert database?

Hvis du får et NULL-resultat, skal du kontrollere, at du forespørger på den korrekte database.

Det forrige eksempel bruger en database kaldet Music og den database har en tabel og kolonne med disse navne. Hvis databasen ikke har en tabel/kolonne kombination som angivet, er resultatet NULL .

Her er, hvad der sker, hvis jeg forespørger i den forkerte database:

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

Resultat:

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

Eksempel 3 – Nogle flere kolonner

Her er et eksempel, der returnerer flere kolonner fra den samme tabel.

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;

Resultat:

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

Eksempel 4 – Forespørgsel på sys.columns

I dette eksempel sammenligner jeg resultaterne med max_length kolonne i sys.columns systemvisning.

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

Resultat:

+-------------------+---------------+--------------+----------------+
| 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 kolonner og deres respektive længder, der returneres her, er fra flere tabeller. I tilfælde af ArtistId , er der en primær nøgle med dette navn i Artists tabel og en fremmednøgle af samme navn i Albums bord. Denne forespørgsel returnerer også tilfældigvis kolonner fra tre visninger samt en funktion med tabelværdi.


  1. Sådan viser du tabeldata mere tydeligt i oracle sqlplus

  2. Sådan sorteres i SQL

  3. Find de maksimale på hinanden følgende år for hvert ID'er i en tabel (Oracle SQL)

  4. PostgreSQL – Sådan fjerner du gentagne værdier