W SQL Server możesz użyć COL_LENGTH()
funkcja, aby uzyskać długość kolumny. Dokładniej, funkcja zwraca zdefiniowaną długość kolumny w bajtach.
Funkcja przyjmuje dwa argumenty:nazwę tabeli i nazwę kolumny.
Przykład 1 – Podstawowe użycie
Oto przykład do zademonstrowania.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Wynik:
+----------+ | Result | |----------| | 510 | +----------+
Przykład 2 – Niewłaściwa baza danych?
Jeśli otrzymasz wynik NULL, sprawdź, czy wysyłasz zapytanie do właściwej bazy danych.
Poprzedni przykład używa bazy danych o nazwie Music
i ta baza danych ma tabelę i kolumnę z tymi nazwami. Jeśli baza danych nie zawiera określonej kombinacji tabeli/kolumny, wynikiem jest NULL
.
Oto, co się stanie, jeśli wyszukam niewłaściwą bazę danych:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Wynik:
+----------+ | Result | |----------| | NULL | +----------+
Przykład 3 – Więcej kolumn
Oto przykład, który zwraca więcej kolumn z tej samej tabeli.
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;
Wynik:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Przykład 4 – Odpytywanie kolumn sys.
W tym przykładzie porównuję wyniki z max_length
kolumna sys.columns
widok systemu.
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');
Wynik:
+-------------------+---------------+--------------+----------------+ | 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 | +-------------------+---------------+--------------+----------------+
Zwrócone tutaj kolumny i ich odpowiednie długości pochodzą z wielu tabel. W przypadku ArtistId
, klucz podstawowy o tej nazwie znajduje się w Artists
tabela i klucz obcy o tej samej nazwie w Albums
stół. To zapytanie zwraca również kolumny z trzech widoków, a także funkcję o wartościach w tabeli.