我有一个人口统计表和一个Employee表,每个表都有一个包含M,F和U等值的Gender列。还有另一个名为Parameter的表,它提供了这些值的描述和字段名称,即:
Description Field_name Value
Male DEMCD M
Female DEMCD F
Unknown DEMCD U
Male EMPDC M
Female EMPDC F
在人口统计表(例如员工表)之外的其他表中,有几个实例使用这些值。有没有办法可以找到哪个字段名称被标记到哪个表,以及该表的名称?
答案 0 :(得分:0)
在SQL Server中,您可以在sys.tables和sys.columns中的列中找到表。例如,您可以使用这样的查询在任何位置搜索列(这假设列中的列名称一致):
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
AND c.name LIKE '%YourColumnName%'
如果所有字段名都存在,您也可以使用此条件将其绑定到参数表:
AND c.name IN (SELECT DISTINCT Field_name FROM Parameter)
如果您希望能够从找到的表中进行选择,可以在select子句中添加如下列:
'SELECT * FROM [' + SCHEMA_NAME(schema_id) + '].[' + t.name + '] WHERE [' + c.name + '] IN (''Value1'',''Value2'')' AS select_code_val
您可以手动复制/粘贴并运行它,在较大的存储过程中将其作为动态sql运行,等等。
答案 1 :(得分:0)
这将为您提供具有指定列
的对象列表 select so.name from sys.objects so inner join sys.columns sc
on so.object_id = sc.object_id
where sc.name = 'yourcolumnname'