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

Kembalikan Daftar Kolom yang Dihitung di SQL Server

Di SQL Server, ada beberapa tampilan katalog sistem yang memungkinkan Anda mendapatkan daftar kolom yang dihitung dalam database.

Salah satu tampilan ini disebut sys.computed_columns . Yang lainnya adalah sys.columns .

Tampilan sys.computed_columns

sys.computed_columns tampilan katalog sistem berisi satu baris untuk setiap kolom yang dihitung dalam database. Oleh karena itu, Anda dapat menjalankan kueri sederhana untuk mendapatkan daftar kolom yang dihitung.

SELECT 
  OBJECT_NAME(object_id) AS [Parent],
  name AS [Computed Column],
  definition,
  is_persisted
FROM sys.computed_columns;

Hasil:

+----------+-------------------+--------------------------------------+----------------+
| Parent   | Computed Column   | definition                           | is_persisted   |
|----------+-------------------+--------------------------------------+----------------|
| Person   | FullName          | (concat([FirstName],' ',[LastName])) | 0              |
| Products | TotalValue        | ([Quantity]*[Price])                 | 1              |
+----------+-------------------+--------------------------------------+----------------+

Sebagian besar kolom tampilan ini diwarisi dari sys.columns melihat. Saya hanya menyertakan beberapa di sini.

Salah satu manfaat tampilan ini pada sys.columns , apakah itu mengembalikan definisi kolom yang dihitung, yang mungkin berguna tergantung pada situasinya. Ini juga termasuk is_persisted flag, yang memberi tahu Anda apakah kolom yang dihitung tetap ada atau tidak. Jika kolom dipertahankan, nilai kolom yang dihitung secara fisik disimpan dalam tabel. Jika tidak, itu dihitung pada saat Anda menanyakan kolom.

Tampilan sys.columns

Anda juga dapat menjalankan kueri terhadap sys.columns untuk mengembalikan kolom yang dihitung. Jika Anda melakukan ini, Anda harus memfilter hasil agar hanya menyertakan kolom yang dihitung. Anda dapat melakukannya dengan WHERE klausa pada is_computed kolom.

Contoh:

SELECT 
  OBJECT_NAME(object_id) as Parent,
  name AS [Computed Column]
FROM sys.columns
WHERE is_computed = 1;

Hasil:

+----------+-------------------+
| Parent   | Computed Column   |
|----------+-------------------|
| Person   | FullName          |
| Products | TotalValue        |
+----------+-------------------+

Tampilan ini tidak mengandung definition , is_persisted , atau uses_database_collation kolom yang sys.computed_columns berisi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konversi 'datetime2' menjadi 'date' di SQL Server (Contoh T-SQL)

  2. Tetapkan nama file secara dinamis ke string koneksi excel

  3. DateTime2 vs DateTime di SQL Server

  4. Pemecahan Masalah Replikasi Transaksional SQL Server

  5. Bagaimana cara menggabungkan banyak baris dengan id yang sama di sql?