Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Gunakan COL_LENGTH() untuk Mendapatkan Panjang Kolom di SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parameterise nama tabel di .NET/SQL?

  2. String_agg untuk SQL Server sebelum 2017

  3. Cara Menggabungkan String dan Nilai NULL di SQL Server

  4. SYSUTCDATETIME() vs GETUTCDATE() di SQL Server:Apa Bedanya?

  5. Bagaimana saya bisa memasukkan 10 juta catatan dalam waktu sesingkat mungkin?