sql - 根据 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
但还没有运气。任何帮助,将不胜感激
解决方案
我觉得你看看就好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 表,然后这将列出数据库中具有匹配列的所有表。
推荐阅读
- opencv - OpenCV OMX 工件
- linux - 我可以在没有 Insider 或 Beta 计划的情况下在最新的 Windows 更新 2004 中激活 WSL 2 吗?
- linear-gradients - 如何在 Theme-ui 中使用渐变值?
- r - 为什么这个循环只正确读取第一个 txt 文件?
- asp.net - 从 ASP.NET 框架整体使用 Blazor 服务器端
- python - /gym/ninja/ninja() 的 TypeError 得到了一个意外的关键字参数
- sql - 如何引用 sqlite_master 的字段?
- java - 自定义程序 - IndexOutOfBoundsException
- python - request.get(url) 仅返回正文为空的标头信息
- python - 如何获取外键字段