我有一个名为Database1
的数据库,其中包含大量表。我试图识别所有具有名为Order Number
的列的表,但手动遍历每个表将花费很长时间。
是否可以执行返回具有特定名称列的表的所有名称的查询?
我尝试了这一点,但它没有识别Database1
,也没有column
:
SELECT TOP 100 * FROM Database1 WHERE column = 'Order Number'
答案 0 :(得分:1)
使用以下查询,您可以获得列名为'订单号'的列表:
SELECT Schema_name(t.schema_id),
Object_name(t.object_id)
FROM sys.columns c
INNER JOIN sys.tables t
ON t.object_id = c.object_id
WHERE c.name = 'Order Number'
并通过使用以下查询,您可以获得上表的记录:
DECLARE @ReturnValue NVARCHAR(max) = ''
SELECT @ReturnValue = @ReturnValue + 'SELECT TOP(100) * FROM ['
+ Schema_name(t.schema_id) + '].['
+ Object_name(t.object_id) + '] ' + Char(10)
+ Char(13)
FROM sys.columns c
INNER JOIN sys.tables t
ON t.object_id = c.object_id
WHERE c.name = 'Order Number'
PRINT @ReturnValue -- Inorder to check your query
EXEC(@ReturnValue)
答案 1 :(得分:0)
use Database1
SELECT table_name FROM INFORMATION_SCHEMA.columns
WHERE column_name = 'Order Number'