sql >> Databáze >  >> RDS >> Sqlserver

Použijte COL_LENGTH() k získání délky sloupce na serveru SQL

V SQL Server můžete použít COL_LENGTH() funkce k získání délky sloupce. Přesněji řečeno, funkce vrací definovanou délku sloupce v bajtech.

Funkce přijímá dva argumenty:název tabulky a název sloupce.

Příklad 1 – Základní použití

Zde je příklad k demonstraci.

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

Výsledek:

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

Příklad 2 – Špatná databáze?

Pokud dostanete výsledek NULL, zkontrolujte, zda se dotazujete na správnou databázi.

Předchozí příklad používá databázi s názvem Music a tato databáze má tabulku a sloupec těchto jmen. Pokud databáze nemá zadanou kombinaci tabulky/sloupce, výsledek je NULL .

Zde je to, co se stane, když zadám dotaz na nesprávnou databázi:

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

Výsledek:

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

Příklad 3 – Několik dalších sloupců

Zde je příklad, který vrací více sloupců ze stejné tabulky.

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;

Výsledek:

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

Příklad 4 – Dotazování na sys.columns

V tomto příkladu porovnávám výsledky s max_length sloupec sys.columns systémový pohled.

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

Výsledek:

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

Zde vrácené sloupce a jejich příslušné délky pocházejí z více tabulek. V případě ArtistId , je primární klíč tohoto jména v Artists tabulky a cizího klíče stejného jména v Albums stůl. Tento dotaz také náhodou vrací sloupce ze tří zobrazení a také funkci s hodnotou tabulky.


  1. Proč v klauzulích where nejsou žádné funkce v okně?

  2. Seřaďte tabulku MySQL podle dvou sloupců

  3. (Čeština) Jak používat Oracle Database 19c Pre-Built Developer VM

  4. Jak zakázat všechna omezení cizího klíče v databázi SQL Server - SQL Server / TSQL výukový program, část 77