查找具有列名称的所有表名称?

时间:2014-10-10 06:18:10

标签: sql-server

如何获取给定列名称所在的所有表名?我希望这些名字与" Like"在sql server中。例如: -

  select TableNames where columnname like '%MyColumn%'

请帮帮我

3 个答案:

答案 0 :(得分:231)

请尝试以下查询。使用sys.columns获取详细信息: -

SELECT c.name AS ColName, t.name AS TableName
FROM sys.columns c
    JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%MyCol%';

答案 1 :(得分:27)

你可以这样做:

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 '%MyColumn%'
ORDER BY schema_name, table_name;

参考:

答案 2 :(得分:15)

尝试这样: 对于SQL SERVER 2008 +

SELECT c.name AS ColName, t.name AS TableName
FROM sys.columns c
    JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%MyColumnaName%'

SELECT COLUMN_NAME, TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%MyName%'

或者 像这样的东西:

SELECT name  
FROM sys.tables 
WHERE OBJECT_ID IN ( SELECT id 
              FROM syscolumns 
              WHERE name like '%COlName%' )