首页 > 解决方案 > 根据 Azure SQL Server 中的名称查找多个列

问题描述

问题:我有 100 个表,它们的全名、出生日期、电子邮件和 ID 可以有不同的列名。例如:表 1 的全称是 Emp name、dob、work email 和 national id。表 2 可能有 Full Nm、出生日期、Wrk 电子邮件、NID 和表 3 可能有全名、出生日期、工作 Em、NatID 等等..对于 10 个或更多不同的表

全名 + DOB 被视为唯一列

我需要的是一个查询或一种自动方式来选择那些可能具有不同名称的列,并根据具有这些列及其值(全名、出生日期、工作电子邮件、国家 ID)的参考表查找这些列值,如果然后我找到了一个匹配

期望的结果:我需要检索找到匹配的表名、找到匹配的列名、匹配的值,如果找不到匹配则返回“不匹配”

我尝试使用INFORMATION_SCHEMA.COLUMNS但还没有运气。任何帮助,将不胜感激

标签: sqlstring-matchinglookup-tablesazure-sql-server

解决方案


我觉得你看看就好INFORMATION_SCHEMA.COLUMNS。除非我没跟着你,否则你一定能做到吗?

select c.COLUMN_NAME, IsNull(m.Found,'No Match') Matches
from INFORMATION_SCHEMA.COLUMNS c
outer apply (
    select column_name + ' is in ' + table_name Found
    from INFORMATION_SCHEMA.COLUMNS x
    where x.COLUMN_NAME =c.COLUMN_NAME and x.TABLE_NAME !=c.TABLE_NAME
)m
where c.table_name='MasterList'

使用要在其他表中定位的所有列变体创建 MasterList 表,然后这将列出数据库中具有匹配列的所有表。


推荐阅读