mssql sqlserver 比较两张表是否拥有相同的列名的方法分享


摘要:
在项目中,领导要求我们对系统中已存在的两张表,进行对比,
对比两张数据表的列之间的区别
下文将讲述具体的实现方法:


由于涉及表的列数非常之多,所以必须将表数据存入相应的列中,然后再进行相关对比
实现思路如下:

1.通过系统表将数据表中的列放入相应的临时表中
2.将存入临时表的列,进行对比得出相同名称的数据列和不同名称的数据列

——————————————————————
例:

  create table A(keyId int,name1 varchar(10),name2 varchar(3))
create table B(keyId1 int,name1 varchar(10),name3 varchar(3))
go

---将数据表A的列插入至临时表中
select *  into #a from (select  row_number() OVER (ORDER BY syscolumns.name DESC) AS [A表流水号],syscolumns.name
  from syscolumns left join sysobjects  on  syscolumns.[id]=sysobjects.[id]   where  sysobjects.[name]='A') as t    
---将数据表B的列插入至临时表中
select *  into #b from (select  row_number() OVER (ORDER BY syscolumns.name DESC) AS [B表流水号],syscolumns.name
  from syscolumns left join sysobjects  on  syscolumns.[id]=sysobjects.[id]   where  sysobjects.[name]='B') as t   

---上文中我们已经将列名放入#a #b中, 我们可以通过以下sql获取表中列的对比 信息
select * from #b where name in (select name from #a) ---B表的列不在A表中
select * from #a where name not in (select name from #b)  ---A表的列不在B表中
select * from #a a,#b b where a.name=b.name  ---A表和B表同时存在的列
select * from #a a left join #b b on a.name=b.name ---A表中的列和B表中的列进行相关匹配

go
drop table #a 
drop table #b
drop table A 
drop table B
mssql_sqlserver_两张表的数据列对比

mssql_sqlserver_两张表的数据列对比