由于项目前后用了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字段的差异的更多相关文章

  1. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  2. SQL Server对Xml字段的操作

    T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...

  3. 使用 SQL Server 的 uniqueidentifier 字段类型

    原文:使用 SQL Server 的 uniqueidentifier 字段类型 SQL Server 自 2008 版起引入了 uniqueidentifier 字段,它存储的是一个 UUID, 或 ...

  4. SQL Server判断某个字段是否包含中文/英文字符/数字

    原文:SQL Server判断某个字段是否包含中文/英文字符/数字 因最近在清理系统中的脏数据,需要查询某个字段是否包含中文/英文字符/数字的数据, 比较简单,仅以此篇博客做一个简单总结,方便以后查阅 ...

  5. SQL Server 2012完全备份、差异备份、事务日志备份和还原操作;

    SQL Server 2012完全备份.差异备份.事务日志备份和还原操作: 1.首先,建立一个测试数据库,TestA:添加一张表,录入二条数据:备份操作这里我就不详细截图和讲解了.相信大家都会备份,我 ...

  6. sql server中将一个字段根据某个字符拆分成多个字段显示

    sql server 数据库中某张表(Person)的数据信息是: ID Address 1 平山花园-4单元-12幢-203 2 香山花园-3单元-22幢-304 现在有需求是,将地址信息显示形式改 ...

  7. SQL Server表和字段说明的增加和更新

    1. 增加字段说明 EXEC sp_addextendedproperty     'MS_Description',     'some description',     'user',      ...

  8. sql server去掉某个字段前后空格问题

    数据通过页面表单保存到数据库,由于有个选项是一个树形的下拉框,导致保存的这个字段的数据前面有空格,在sql server中可以使用 SELECT LTRIM(RTRIM(BelongPartyCode ...

  9. SQL Server查询某个字段存在哪些表中

    一.查询SQL Server中所有的表 SQL语句:SELECT * FROM sys.tables name列表示所有的表名. 二.查询SQL Server中所有的列 SQL语句:SELECT * ...

随机推荐

  1. mybatis foreach批量插入数据:Oracle与MySQL区别

    mybatis foreach批量插入数据:Oracle与MySQL不同点: 主要不同点在于foreach标签内separator属性的设置问题: separator设置为","分 ...

  2. BZOJ:1185: [HNOI2007]最小矩形覆盖

    1185: [HNOI2007]最小矩形覆盖 这计算几何……果然很烦…… 发现自己不会旋转卡壳,补了下,然后发现求凸包也不会…… 凸包:找一个最左下的点,其他点按照与它连边的夹角排序,然后维护一个栈用 ...

  3. Spring框架学习笔记(6)——bean的继承与依赖

    一.bean的继承 Spring通过bean标签的parent属性来实现bean的继承,这个继承的概念只存在于配置层面,也就是说bean只会继承其父bean的属性值. 父bean可以通过abstrac ...

  4. [国嵌攻略][091][TCP网络程序设计]

    server.c #include <sys/socket.h> #include <netinet/in.h> #include <strings.h> #inc ...

  5. 基础二 day4 日记

    1.list增删改查 l1 = [1,'alex',True,[1,2,3],(2,3,4),{'name':'alex'}]l1 = ['alex',True,'wusir','ritian','t ...

  6. webzip怎么用 如何用webzip下载整个网站?

    相信很多站长对webzip这款软件都并不感到陌生,它功能强大,能够完整下载网站的内容,或者你也可以选择自行设置下载的层数.文件类型.网页与媒体文件的定位等等.具体详情你可以在百度上去搜一下.由于web ...

  7. WOW.js – 让页面滚动更有趣

    演示1 演示2-仿oppo首页 下载 简介 有的页面在向下滚动的时候,有些元素会产生细小的动画效果.虽然动画比较小,但却能吸引你的注意.比如刚刚发布的 iPhone 6 的页面(查看).如果你希望你的 ...

  8. [SinGuLaRiTy] 复习模板-搜索

    [SinGuLaRiTy-1043] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 桶排序 void bucketSort(int a[], ...

  9. Android之MaterialDesign应用技术

    PS:纵观现在大大小小软件的界面都变的比较漂亮,还有一些系统了,比如小米的MIUI,华为的EMUI等,虽然底层都是安卓,但他们的界面多多少少都会不同,谷歌对这个UI也是非常重视的,MaterialDe ...

  10. [ios 开发笔记]:一句话笔记

    1.NSString转int int a=[@"123" intValue]; 同样适用于NSDictionary将NSNumber转为int   2.switch(stateme ...