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

Cara Menemukan Tabel yang Mengandung Kolom Tertentu di SQL Server

Meskipun sangat kuat sebagai database relasional, SQL Server terkadang bisa menjadi sesuatu yang menakutkan ketika harus mencari informasi mendasar tentang sistem database itu sendiri.

Untuk meringankan sakit kepala ini di beberapa bagian kecil, kami akan secara singkat mengeksplorasi cara menemukan semua tabel dalam database yang berisi nama kolom tertentu .

Tampilan Katalog SQL Server

Salah satu konsep dasar yang harus dipahami tentang SQL Server adalah catalog views , yang secara efektif merupakan tabel database (catalogs dalam hal ini) yang menampilkan informasi di seluruh sistem tentang SQL Server Database Engine.

Meminta Informasi Sistem

Semua catalog views diakses melalui SELECT Pernyataan SQL FROM katalog tertentu dalam sys. ruang nama.

Misalnya, pernyataan berikut dapat digunakan untuk melihat informasi tentang semua tabel database dalam sistem melalui sys.tables katalog:

SELECT
  *
FROM
  sys.tables

Pernyataan SUKAI dan Karakter Wildcard

Sebelum kita masuk ke cara mengekstrak semua tabel dengan nama tertentu, kita harus menjelajahi secara singkat apa yang LIKE pernyataan tidak, serta wildcard (% ) simbol, dan bagaimana mereka digunakan bersama.

LIKE digunakan dalam kueri untuk menentukan apakah pola karakter tertentu (biasanya nilai dari column tertentu ) cocok dengan string karakter yang diformat.

LIKE sering juga digunakan bersama dengan % karakter, yang mewakili wildcard saat mencoba mencocokkan pola. Ketika % karakter wildcard hadir dalam string pola, ini menunjukkan bahwa apa saja karakter dapat hadir di lokasi string pola tersebut dan masih dianggap cocok.

Misalnya, jika kita ingin mencari semua buku dengan title dimulai dengan "The" tetapi dapat berisi karakter apa pun setelahnya, kami akan menggunakan pernyataan seperti ini:

SELECT
  title,
  primary_author,
  published_date
FROM
  books
WHERE
  title LIKE 'The%'

Pembaca yang jeli mungkin menyadari bahwa pola di atas tidak hanya cocok dengan judul yang memiliki "The" di awal, tetapi juga semua judul dengan kata-kata yang dimulai dengan tiga huruf "The" juga. Sejak % wildcard cocok dengan karakter apa pun, jika kita hanya ingin memeriksa judul dengan kata “The”, menambahkan spasi lebih tepat:

SELECT
  title,
  primary_author,
  published_date
FROM
  books
WHERE
  title LIKE 'The %'

Memilih Tabel yang Mengandung Nama Kolom

Dengan pengetahuan dasar kami tentang kedua catalog views dan LIKE pernyataan, kami sekarang dilengkapi untuk mencari semua tabel di sistem kami yang berisi nama kolom tertentu:

SELECT
  sys.columns.name AS ColumnName,
  tables.name AS TableName
FROM
  sys.columns
JOIN sys.tables ON
  sys.columns.object_id = tables.object_id
WHERE
  sys.columns.name = 'ColumnName'

Kita perlu menggabungkan informasi dari dua katalog, sys.tables dan sys.columns , jadi kami menggunakan JOIN penyataan. Keduanya diasosiasikan dengan object_id bidang, jadi kami JOIN di bidang itu.

Dari sana, tinggal pilih ColumnName dan TableName dari hasil kami, dan akhirnya, tentu saja, hanya mencari catatan di mana sys.columns.name sama dengan ColumnName kami string.

Namun, kueri ini hanya akan menemukan kecocokan persis dari nama kolom. Jika kita ingin menemukan kecocokan sebagian, kita dapat menggunakan LIKE dan % karakter wildcard sebagai gantinya:

SELECT
  sys.columns.name AS ColumnName,
  tables.name AS TableName
FROM
  sys.columns
JOIN sys.tables ON
  sys.columns.object_id = tables.object_id
WHERE
  sys.columns.name LIKE '%ColumnName%'

Di sana kita memilikinya! Kueri sederhana untuk mencari semua tabel dan kolom terkait dengan nama kolom tertentu (atau serupa) di dalamnya.


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

  2. Gunakan NEWSEQUENTIALID() untuk Membuat GUID yang Bertambah di SQL Server

  3. Grup SQL Server berdasarkan Hitungan DateTime Per Jam?

  4. Haruskah setiap kunci asing SQL Server memiliki indeks yang cocok?

  5. Buat Tampilan di SQL Server 2017