Menemukan semua tabel yang berisi kolom dengan nama yang ditentukan - MS SQL Server

Apakah mungkin untuk query untuk nama tabel yang berisi kolom yang

LIKE '%myName%'

?

Mengomentari pertanyaan (3)

Pencarian Tabel:

SELECT      c.name  AS 'ColumnName'
            ,t.name AS 'TableName'
FROM        sys.columns c
JOIN        sys.tables  t   ON c.object_id = t.object_id
WHERE       c.name LIKE '%MyName%'
ORDER BY    TableName
            ,ColumnName;

PencarianTabel & Views:**

SELECT      COLUMN_NAME AS 'ColumnName'
            ,TABLE_NAME AS  'TableName'
FROM        INFORMATION_SCHEMA.COLUMNS
WHERE       COLUMN_NAME LIKE '%MyName%'
ORDER BY    TableName
            ,ColumnName;
Komentar (8)

Kita juga bisa menggunakan sintaks berikut:-

select * from INFORMATION_SCHEMA.COLUMNS 
where COLUMN_NAME like '%clientid%' 
order by TABLE_NAME
Komentar (2)

SQL Server:

SELECT Table_Name, Column_Name 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'YOUR_DATABASE'
AND COLUMN_NAME LIKE '%YOUR_COLUMN%'

Oracle:

SELECT owner, table_name, column_name 
FROM all_tab_columns 
WHERE column_name LIKE '%YOUR_COLUMN_NAME%'
AND OWNER IN ('YOUR_SCHEMA_NAME');
  • SEDERHANA SEPERTI ITU!! (SQL, PL/SQL) Saya menggunakannya SEPANJANG waktu untuk menemukan SEMUA contoh nama kolom pada database tertentu (skema).
Komentar (1)
select  
        s.[name]            'Schema',
        t.[name]            'Table',
        c.[name]            'Column',
        d.[name]            'Data Type',
        c.[max_length]      'Length',
        d.[max_length]      'Max Length',
        d.[precision]       'Precision',
        c.[is_identity]     'Is Id',
        c.[is_nullable]     'Is Nullable',
        c.[is_computed]     'Is Computed',
        d.[is_user_defined] 'Is UserDefined',
        t.[modify_date]     'Date Modified',
        t.[create_date]     'Date created'
from        sys.schemas s
inner join  sys.tables  t
on s.schema_id = t.schema_id
inner join  sys.columns c
on t.object_id = c.object_id
inner join  sys.types   d
on c.user_type_id = d.user_type_id
where c.name like '%ColumnName%'

Ini akan memberikan anda sedikit informasi tambahan tentang skema, tabel dan kolom yang anda mungkin atau mungkin tidak memilih untuk menggunakan tambahan kondisi dalam where clause untuk menyaring. Misalnya, jika anda hanya ingin melihat bidang yang harus memiliki nilai tambah

and c.is_nullable = 0

Anda bisa menambahkan conditional, saya juga menambahkan kolom pada klausa select ini cara vertikal sehingga mudah untuk menyusun ulang, menghapus, mengubah nama, atau menambahkan orang lain berdasarkan kebutuhan anda. Bergantian, anda dapat mencari hanya tabel dengan menggunakan T. Nama. Sangat disesuaikan.

Menikmati.

Komentar (2)

Ini harus bekerja:

SELECT name 
FROM sysobjects 
WHERE id IN ( SELECT id 
              FROM syscolumns 
              WHERE name like '%column_name%' )
Komentar (2)

Jika anda lebih ke alat pihak ketiga di sana banyak pilihan yang ada seperti:

Ini datang sangat berguna jika database anda berisi benda dienkripsi (pandangan, prosedur, fungsi) karena anda bisa dengan mudah mencari ini menggunakan sistem tabel.

Komentar (0)

Saya don't tahu mengapa begitu banyak dari anda menunjukkan Bergabung dengan sys.tabel dengan sys.kolom anda hanya dapat menggunakan kode di bawah ini:

Select object_name(object_id) sebagai TableName,* from SYS.kolom dimana nama SEPERTI '%MyName%'

atau

Jika anda ingin nama skema seperti ini:

Select * from  INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME LIKE '%MyName%'
Komentar (3)

Jika anda hanya ingin nama tabel yang dapat anda jalankan:

select object_name(object_id) from sys.columns
where name like '%received_at%'

Jika anda ingin Nama Skema serta (yang dalam banyak kasus, anda akan, seperti yang anda'll memiliki banyak skema yang berbeda, dan kecuali jika anda dapat mengingat setiap tabel dalam database dan di mana itu milik ini dapat berguna) jalankan:

select OBJECT_SCHEMA_NAME(object_id),object_name(object_id) from sys.columns
where name like '%received_at%'

dan akhirnya jika anda ingin yang lebih bagus format (meskipun ini adalah di mana kode (menurut saya) semakin terlalu rumit untuk memudahkan penulisan):

select concat(OBJECT_SCHEMA_NAME(object_id),'.',object_name(object_id)) from sys.columns
where name like '%received_at%'

catatan anda juga dapat membuat fungsi berdasarkan apa yang saya miliki:

CREATE PROCEDURE usp_tablecheck
--Scan through all tables to identify all tables with columns that have the provided string
--Stephen B
@name nvarchar(200)
AS
SELECT CONCAT(OBJECT_SCHEMA_NAME(object_id),'.',object_name(object_id)) AS [Table Name], name AS [Column] FROM sys.columns
WHERE name LIKE CONCAT('%',@name,'%')
ORDER BY [Table Name] ASC, [Column] ASC
GO

Perlu dicatat bahwa concat fitur yang ditambahkan pada tahun 2012. Untuk 2008r2 dan sebelumnya digunakan untuk menggabungkan string.

I've diformat ulang proc sedikit sejak saya memposting ini. It's sedikit lebih maju sekarang, tapi terlihat banyak messier (tetapi's di proc sehingga anda'll pernah melihatnya) dan's diformat baik.

Versi ini memungkinkan anda untuk memiliki itu dalam administrasi database dan kemudian cari melalui database. Mengubah decleration of @db dari 'master' ke mana anda ingin default database yang akan (CATATAN: menggunakan CONCAT() fungsi ini hanya akan bekerja dengan 2012+ kecuali jika anda mengubah string rangkaian untuk menggunakan + operator).

CREATE PROCEDURE [dbo].[usp_tablecheck]
    --Scan through all tables to identify all tables in the specified database with columns that have the provided string
    --Stephen B
    @name nvarchar(200)
    ,@db nvarchar(200) = 'master'
AS
    DECLARE @sql nvarchar(4000) = CONCAT('
        SELECT concat(OBJECT_SCHEMA_NAME(col.object_id,DB_ID(''',@db,''')),''.'',object_name(col.object_id,DB_ID(''',@db,'''))) AS [Table Name]
            ,col.name AS [Column] 
        FROM ',@db,'.sys.columns col
        LEFT JOIN ',@db,'.sys.objects ob 
            ON ob.object_id = col.object_id
        WHERE 
            col.name LIKE CONCAT(''%'',''',@name,''',''%'') 
            AND ob.type =''U''
        ORDER BY [Table Name] ASC
            ,[Column] ASC')
    EXECUTE (@sql)
GO
Komentar (0)
USE AdventureWorks

GO

SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name,
 c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%EmployeeID%'
ORDER BY schema_name, table_name; 

Itu adalah dari Pinal Pak Blog

Komentar (0)
SELECT COLUMN_NAME, TABLE_NAME
  FROM INFORMATION_SCHEMA.COLUMNS    
 WHERE COLUMN_NAME LIKE '%myName%'
Komentar (0)

Anda dapat menemukannya dari INFORMATION_SCHEMA.KOLOM dengan column_name filter

Select DISTINCT TABLE_NAME as TableName,COLUMN_NAME as ColumnName
     From INFORMATION_SCHEMA.COLUMNS Where column_name like '%myname%'
Komentar (0)
SELECT  [TABLE_NAME] ,
        [INFORMATION_SCHEMA].COLUMNS.COLUMN_NAME
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME LIKE '%NAME%' ;
Komentar (0)

Query berikut ini akan memberikan anda tepat nama tabel dari database yang memiliki nama field seperti '%myName'.

SELECT distinct(TABLE_NAME)
  FROM INFORMATION_SCHEMA.COLUMNS    
 WHERE COLUMN_NAME LIKE '%myName%'
Komentar (0)

Untuk mendapatkan informasi lengkap: nama kolom, tabel nama serta skema meja..

SELECT COLUMN_NAME, TABLE_NAME, TABLE_SCHEMA
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%col_Name%'
Komentar (0)

saya hanya mencoba ini dan ini bekerja dengan sempurna

USE YourDatabseName
GO
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%YourColumnName%'
ORDER BY schema_name, table_name;

Hanya perubahan YourDatbaseName untuk database anda dan YourcolumnName untuk kolom nama yang anda cari sisanya tetap seperti itu.

Harapan ini telah membantu

Komentar (0)
DECLARE @columnName as varchar(100)
SET @columnName = 'ColumnName'

SELECT t.name AS Table, c.name AS Column,
ty.name AS Type, c.max_length AS Length
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
INNER JOIN sys.types ty ON c.system_type_id = ty.system_type_id
WHERE c.name LIKE @columnName
ORDER BY t.name, c.name
Komentar (0)

Saya menggunakan ini untuk tujuan yang sama dan bekerja:

  select * from INFORMATION_SCHEMA.COLUMNS
  where TABLE_CATALOG= 'theDatabase'
  and COLUMN_NAME like 'theCol%'
Komentar (0)
SELECT t.name AS table_name, 
    SCHEMA_NAME(schema_id) AS schema_name,
    c.name AS column_name
FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%Label%'
ORDER BY schema_name, table_name;
Komentar (0)

Mudah-mudahan ini isn't duplikat menjawab, tapi apa yang saya ingin lakukan adalah menghasilkan pernyataan sql dalam sebuah pernyataan sql yang akan memungkinkan saya untuk mencari nilai-nilai yang saya cari (bukan hanya tabel dengan nama field ( seperti's biasanya diperlukan bagi saya untuk menghapus semua info yang terkait dengan id nama kolom saya mencari):

  SELECT  'Select * from ' + t.name + ' where ' + c.name + ' = 148' AS SQLToRun
  FROM sys.columns c, c.name as ColName, t.name as TableName
  JOIN sys.tables t 
     ON c.object_id = t.object_id
  WHERE c.name LIKE '%ProjectID%'

Kemudian saya dapat copy dan paste menjalankan saya 1 kolom "SQLToRun"... kemudian saya ganti "Select * from ' dengan 'Hapus dari ' dan itu memungkinkan saya untuk menghapus referensi yang diberikan ID! Menulis hasil-hasil ini ke file sehingga anda memiliki mereka hanya dalam kasus.

CATATAN**** pastikan anda menghilangkan bakup tabel sebelum anda menjalankan anda menghapus pernyataan...

  SELECT  'Delete from ' + t.name + ' where ' + c.name + ' = 148' AS SQLToRun
  FROM sys.columns c, c.name as ColName, t.name as TableName
  JOIN sys.tables t 
     ON c.object_id = t.object_id
  WHERE c.name LIKE '%ProjectID%'
Komentar (0)

Seperti oracle anda dapat menemukan tabel dan kolom dengan ini:

select table_name, column_name
from user_tab_columns 
where column_name 
like '%myname%';
Komentar (0)