需要有关sql server表的建议

Joe*_*dev 2 sql t-sql sql-server

有没有人知道如何使用SQL Server系统表获取表名和列名?

示例:我知道数据库中的某个表有一个包含ID = 1125412的字段.

有没有办法在数据库上运行全局查询,以获取此数据所在的列名和表名.

这是否可行,如果您知道列名称,并且您想知道它所属的表名称?

Yuc*_*uck 7

这是非常讨厌的,但它会起作用:

-- Finding all tables with an ID column
SELECT SCHEMA_NAME(T.schema_id) SchemaName,
       T.name TableName
INTO #FoundTables
FROM sys.tables T INNER JOIN
     sys.columns C ON T.object_id = C.object_id
WHERE C.name = 'ID';

DECLARE @SchemaName NVarChar(100),
        @TableName NVarChar(100),
        @SQL NVarChar(2000);
-- Dynamically build a SELECT statement
WHILE (EXISTS (SELECT * FROM #FoundTables)) BEGIN
  SELECT TOP 1 @SchemaName = SchemaName, @TableName = TableName,
    @SQL = 'SELECT * FROM $SchemaName.$TableName WHERE ID = 1125412;'
  FROM #FoundTables;

  SELECT @SQL =
    REPLACE(REPLACE(@SQL, '$SchemaName', @SchemaName), '$TableName', @TableName);
  EXEC (@SQL);

  DELETE FROM #FoundTables
  WHERE SchemaName = @SchemaName
    AND TableName = @TableName;
END;

DROP TABLE #FoundTables;
Run Code Online (Sandbox Code Playgroud)

  • 确实很难看,但你必须做你必须做的事;)+1 (2认同)