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

Gunakan COLUMNPROPERTY() untuk Mengembalikan Kolom atau Informasi Parameter di SQL Server

Di SQL Server, COLUMNPROPERTY() fungsi mengembalikan informasi kolom atau parameter.

Misalnya, Anda dapat menggunakannya untuk mengembalikan informasi tentang kolom dalam tabel, parameter untuk prosedur tersimpan, dll

Ia menerima tiga argumen:ID tabel atau prosedur, kolom atau parameter yang berlaku, dan properti yang Anda inginkan informasinya.

Sintaks

Sintaksnya seperti ini:

COLUMNPROPERTY ( id , column , property )

Contoh 1 – Membuat Kueri Tabel

Dalam contoh ini, saya mendapatkan informasi tentang kolom di dalam tabel.

USE Music;
SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];

Hasil:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Dalam hal ini, kolom ArtistId tidak mengizinkan nilai NULL.

Mari beralih ke kolom lain:

SELECT 
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];

Hasil:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

Dalam hal ini, kolom ActiveFrom memungkinkan nilai NULL. Ini juga memiliki presisi 10 dan skala 0.

Anda akan melihat bahwa saya menggunakan OBJECT_ID() berfungsi untuk mengembalikan ID tabel. Tanpa fungsi ini, saya perlu mengetahui ID (atau saya perlu melakukan kueri lain hanya untuk mendapatkan ID).

Ini dia OBJECT_ID() kembali dalam contoh di atas:

SELECT OBJECT_ID('Artists') AS Result;

Hasil:

+-----------+
| Result    |
|-----------|
| 885578193 |
+-----------+

Jadi sekarang setelah kita mengetahui ID, kita dapat meneruskannya ke COLUMNPROPERTY() fungsi sebagai gantinya:

SELECT 
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision],
  COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];

Hasil:

+--------------+-------------+---------+
| ActiveFrom   | Precision   | Scale   |
|--------------+-------------+---------|
| 1            | 10          | 0       |
+--------------+-------------+---------+

Contoh 2 – Mengkueri Prosedur

Dalam contoh ini, saya mendapatkan informasi tentang parameter prosedur tersimpan.

USE Music;
SELECT 
  COLUMNPROPERTY(
      OBJECT_ID('dbo.uspGetAlbumsByArtist'), 
      '@ArtistId', 
      'IsOutParam') AS [Result];

Hasil:

+----------+
| Result   |
|----------|
| 0        |
+----------+

Jadi sintaksnya persis sama. Dalam hal ini, parameter @ArtistId bukan parameter keluaran.

Daftar Lengkap Opsi

Berikut daftar lengkap argumen yang dapat Anda berikan ke COLUMNPROPERTY() pada saat penulisan:

  • AllowsNull
  • Id Kolom
  • FullTextTypeColumn
  • GeneratedAlwaysType
  • IsColumnSet
  • Dihitung
  • IsCursorType
  • ApakahDeterministik
  • IsFulltextIndexed
  • Tersembunyi
  • IsIdentity
  • IsIdNotForRepl
  • Dapat Diindeks
  • IsOutParam
  • Tepat
  • IsRowGuidCol
  • Jarang
  • IsSystemVerified
  • IsXmlIndexable
  • Presisi
  • Skala
  • Semantik Statistik
  • SystemDataAccess
  • Akses DataPengguna
  • MenggunakanAnsiTrim

Lihat dokumentasi Microsoft untuk penjelasan mendetail tentang setiap properti.

Lihat juga OBJECTPROPERTYEX() untuk fungsi serupa yang mengembalikan informasi tentang objek cakupan skema daripada database, dan DATABASEPROPERTYEX() yang mengembalikan info properti untuk database.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Prosedur Tersimpan di SQL Server 2017

  2. Bagaimana cara mendapatkan koordinat pembatas untuk kode pos (zip) AS?

  3. 3 Metode untuk Menghubungkan File MDF ke SQL Server

  4. Cara Mendefinisikan Kunci Utama Peningkatan Otomatis di SQL Server

  5. Kapan saya harus menggunakan CROSS APPLY daripada INNER JOIN?