SQL Server比较2table字段的差异

Posted 光头才能强

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server比较2table字段的差异相关的知识,希望对你有一定的参考价值。

由于项目前后用了2个数据库,需要统计数据库结构的变化,需要统计每个表的变化,由于人工核对挺浪费时间,就写了一点代码:

1.统计表的字段数量(查询表有多少列):

  select count(name)  from syscolumns where  id=object_id(‘表名‘)

  eg:select count(name)  from syscolumns where  id=object_id(‘t_dk‘)

2.查询数据库字段名 (表有哪些字段)

  select name  

  from 数据库名.dbo.syscolumns  

  where id=(

    select id from 数据库名.dbo.sysobjects  where name=‘表名‘

  )

  eg:

  select name 

  from Catsic_Compare0803DiLong_2017080311.dbo.syscolumns  

  where id=(

    select id from Catsic_Compare0803DiLong_2017080311.dbo.sysobjects  where name=‘t_cbjzc‘

  )

3.比较两个数据库相应表的差异(查询表对应的字段是否一致)

  本部分是基于2写的:

select * from (
  select name
  from 数据库A.dbo.syscolumns
  where id=(
    select id from 数据库A.dbo.sysobjects
    where name=‘表名A‘)
) T1 FULL OUTER JOIN(
  select name from 数据库B.dbo.syscolumns
  where id=(
    select id from 数据库B.dbo.sysobjects
    where name=‘表B‘
  )
) T2 on T1.name=T2.name

  eg:

select * from (
  select name 
  from Catsic_Compare0803DiLong_2017080311.dbo.syscolumns 
  where id=(
    select id from Catsic_Compare0803DiLong_2017080311.dbo.sysobjects 
    where name=‘t_cbjzc‘)
) T1 FULL OUTER JOIN(
  select name from Catsicgl_43_2016Eroad_2017111110.dbo.syscolumns 
  where id=(
    select id from Catsicgl_43_2016Eroad_2017111110.dbo.sysobjects 
    where name=‘t_cbjzc‘
  )
) T2 on T1.name=T2.name

只显示字段字段名有差异的字段,增加一个条件即可where T1.name is null or T2.name is null

即全部code:

select * from (
  select name 
  from Catsic_Compare0803DiLong_2017080311.dbo.syscolumns 
  where id=(
    select id from Catsic_Compare0803DiLong_2017080311.dbo.sysobjects 
    where name=‘t_cbjzc‘)
) T1 FULL OUTER JOIN(
  select name from Catsicgl_43_2016Eroad_2017111110.dbo.syscolumns 
  where id=(
    select id from Catsicgl_43_2016Eroad_2017111110.dbo.sysobjects 
    where name=‘t_cbjzc‘
  )
) T2 on T1.name=T2.name

where T1.name is null or T2.name is null

 

SQL Server初学者,鼓励转载,共同学习

 





































以上是关于SQL Server比较2table字段的差异的主要内容,如果未能解决你的问题,请参考以下文章

sql server新旧数据库的表结构差异

SQL Server - 使用 PIVOT 查询比较 2 个表中的字段

dbstructsync 多套mysql环境表字段索引的差异sql产出(原创)

SQL Server 中是不是有一种方法可以显示两个具有相同布局并共享一些公共数据的表之间的字段差异

在 MS Access 或 SQL Server 中查找 2 个表之间的差异

SQL Server,HQL:如何将 SQL Server 日期时间列字段与日期进行比较