Di SQL Server, Anda dapat menggunakan COL_LENGTH()
berfungsi untuk mendapatkan panjang kolom. Lebih khusus lagi, fungsi mengembalikan panjang kolom yang ditentukan, dalam byte.
Fungsi menerima dua argumen:nama tabel, dan nama kolom.
Contoh 1 – Penggunaan Dasar
Berikut ini contoh untuk didemonstrasikan.
USE Music; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Hasil:
+----------+ | Result | |----------| | 510 | +----------+
Contoh 2 – Basis Data Salah?
Jika Anda mendapatkan hasil NULL, periksa apakah Anda menanyakan database yang benar.
Contoh sebelumnya menggunakan database yang disebut Music
dan database itu memang memiliki tabel dan kolom dari nama-nama itu. Jika database tidak memiliki kombinasi tabel/kolom seperti yang ditentukan, hasilnya adalah NULL
.
Inilah yang terjadi jika saya menanyakan database yang salah:
USE WideWorldImportersDW; SELECT COL_LENGTH('dbo.Artists', 'ArtistName') AS Result;
Hasil:
+----------+ | Result | |----------| | NULL | +----------+
Contoh 3 – Beberapa Kolom Lagi
Berikut adalah contoh yang mengembalikan lebih banyak kolom dari tabel yang sama.
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;
Hasil:
+------------+--------------+--------------+-------------+ | ArtistId | ArtistName | ActiveFrom | CountryId | |------------+--------------+--------------+-------------| | 4 | 510 | 3 | 4 | +------------+--------------+--------------+-------------+
Contoh 4 – Membuat kueri sys.columns
Dalam contoh ini saya membandingkan hasilnya dengan max_length
kolom sys.columns
tampilan sistem.
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');
Hasil:
+-------------------+---------------+--------------+----------------+ | 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 | +-------------------+---------------+--------------+----------------+
Kolom dan panjangnya masing-masing yang dikembalikan di sini berasal dari beberapa tabel. Dalam kasus ArtistId
, ada kunci utama nama ini di Artists
tabel dan kunci asing dengan nama yang sama di Albums
meja. Kueri ini juga mengembalikan kolom dari tiga tampilan, serta fungsi bernilai tabel.