SELECT t.name AS table_name FROM sys.tables t JOIN sys.columns c ON t.object_id = c.object_id WHERE c.name ='column_name';
查找表和视图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
SELECT t.TABLE_TYPE AS [Type], c.TABLE_NAME AS [Object], c.COLUMN_NAME AS [Column] FROM INFORMATION_SCHEMA.COLUMNS AS c LEFTJOIN INFORMATION_SCHEMA.TABLES AS t ON t.TABLE_CATALOG = c.TABLE_CATALOG AND t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME WHERE c.COLUMN_NAME LIKE'%myName%' ORDERBY [Type], [Object], [Column]
包含模式信息
1 2 3 4 5 6 7
SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNERJOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE'%colName%' ORDERBY schema_name, table_name;
Oracle
1 2 3 4
SELECT owner, table_name, column_name FROM all_tab_columns WHERE column_name LIKE'%YOUR_COLUMN_NAME%' AND OWNER IN ('YOUR_SCHEMA_NAME');
Sybase
1 2 3 4 5 6 7
select t.table_name, c.column_name from systab as t key join systabcol as c where c.column_name ='MyColumnName';
核心代码
以下是在 SQL Server 中查找包含指定列名的表的通用代码:
1 2 3 4
SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE'%myName%' ORDERBY TABLE_NAME;
最佳实践
使用存储过程:可以创建存储过程来封装查询逻辑,提高代码的复用性。
1 2 3 4 5 6 7
CREATEPROCEDURE usp_tablecheck @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,'%') ORDERBY [Table Name] ASC, [Column] ASC GO