在 SQL Server 中查找包含特定列名的所有表
作为 SQL DBA,我们可能需要编写一个 SQL 查询来查找包含特定列名的所有表,例如。
下面的屏幕截图将显示数据库“ SQL_DBA ”中的表
- 在 SQL 数据库中查找包含特定列名的所有表:
在下面的示例中,我们使用 INFORMATION_SCHEMA.COLUMNS 来获取列名类似于 '%Err%' 的表名。询问 -
SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION as org_pos, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH as CML FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like '%Err%' ORDER BY TABLE_NAME
输出 -
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME org_pos DATA_TYPE CML SQL_DBA dbo tbl_Errors_Stats Errodate 6 datetime NULL SQL_DBA dbo tbl_Errors_Stats ErrorMsg 5 varchar -1 - 查找包含特定列名的所有表:
在本例中,我们使用 sys.column 获取列信息,使用 sys.tables 获取数据库表名。
询问 -
SELECT col.name AS [Column Name], tab.name AS [Table Name]
FROM sys.columns col
INNER JOIN sys.tables tab
ON col.object_id = tab.object_id
WHERE col.name LIKE '%Name%'
ORDER BY [Table Name], [Column Name]
输出 -
Column Name | Table Name |
---|---|
DatabaseName | tbl_Errors_Stats |
SQLInstanceName | tbl_Errors_Stats |
StatisticsName | tbl_Errors_Stats |
DatabaseName | tbl_QualifiedDBs |
DatabaseName | tbl_Statistics_Update_Trans |
SQLInstanceName | tbl_Statistics_Update_Trans |
StatisticsName | tbl_Statistics_Update_Trans |
TableName | tbl_Statistics_Update_Trans |
DatabaseName | tbl_Statistics_Update_Trans_Post |
SQLInstanceName | tbl_Statistics_Update_Trans_Post |
StatisticsName | tbl_Statistics_Update_Trans_Post |
TableName | tbl_Statistics_Update_Trans_Post |