Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използвайте COL_LENGTH(), за да получите дължината на колона в SQL Server

В SQL Server можете да използвате COL_LENGTH() функция за получаване на дължината на колона. По-конкретно, функцията връща дефинираната дължина на колоната в байтове.

Функцията приема два аргумента:името на таблицата и името на колоната.

Пример 1 – Основна употреба

Ето пример за демонстрация.

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

Резултат:

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

Пример 2 – Грешна база данни?

Ако получите резултат NULL, проверете дали заявявате правилната база данни.

Предишният пример използва база данни, наречена Music и тази база данни има таблица и колона с тези имена. Ако базата данни няма комбинация от таблица/колона, както е посочено, резултатът е NULL .

Ето какво се случва, ако потърся грешна база данни:

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

Резултат:

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

Пример 3 – Още няколко колони

Ето пример, който връща повече колони от същата таблица.

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;

Резултат:

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

Пример 4 – Запитване на sys.columns

В този пример сравнявам резултатите с max_length колона на sys.columns системен изглед.

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

Резултат:

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

Колоните и съответните им дължини, върнати тук, са от множество таблици. В случай на ArtistId , има първичен ключ на това име в Artists таблица и външен ключ със същото име в Albums маса. Тази заявка също така връща колони от три изгледа, както и функция с таблична стойност.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Въведение във временните таблици в SQL Server

  2. Подреждане на опашка в OneWay WCF съобщения с помощта на Windows Service и SQL Server

  3. Представяне на възпроизвеждане—Нова диагностика във времето за Spotlight Cloud

  4. Разлика между sys.objects, sys.system_objects и sys.all_objects в SQL Server

  5. Запазване на връзките родител-дете при копиране на йерархични данни