查询SQlServer相同表结构差异
USE [数据库名]
GO DECLARE @TableName1 NVARCHAR(100);
DECLARE @TableName2 NVARCHAR(100); DECLARE @DataName1 NVARCHAR(100);
DECLARE @DataName2 NVARCHAR(100); SET @DataName1='库1';
SET @DataName2='库2'; SET @TableName1='表1';
SET @TableName2='表2'; SET @TableName2=@TableName1; SELECT
(case when a.colorder=1 then d.name else null end) 表名1,
a.name 字段名1,
(case when (SELECT count(*) FROM sysobjects
WHERE (name in (SELECT name FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name)))))))
AND (xtype = 'PK'))>0 then '√' else '' end) 主键1,b.name 类型1,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度1
,1 AS aa
INTO #temp1
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.class and f.minor_id=0
where b.name is not null AND (SELECT COUNT(1) FROM Master..SysDatabases sysA WHERE sysA.name=@DataName1 )>0 AND d.name=@TableName1 --WHERE d.name='要查询的表' --如果只查询指定表,加上此条件
order by a.name,a.id,a.colorder SELECT
(case when a.colorder=1 then d.name else null end) 表名2,
a.name 字段名2,
(case when (SELECT count(*) FROM sysobjects
WHERE (name in (SELECT name FROM sysindexes
WHERE (id = a.id) AND (indid in
(SELECT indid FROM sysindexkeys
WHERE (id = a.id) AND (colid in
(SELECT colid FROM syscolumns WHERE (id = a.id) AND (name = a.name)))))))
AND (xtype = 'PK'))>0 then '√' else '' end) 主键2,b.name 类型2,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度2
,1 AS aa
INTO #temp2
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.class and f.minor_id=0
where b.name is not null AND (SELECT COUNT(1) FROM Master..SysDatabases sysA WHERE sysA.name=@DataName2 )>0 AND d.name=@TableName2 --WHERE d.name='要查询的表' --如果只查询指定表,加上此条件
order by a.name,a.id,a.colorder SELECT * FROM (
SELECT COUNT(1) AS 表1字段数量 FROM #temp1
)a ,
(
SELECT COUNT(1) AS 表2字段数量 FROM #temp2 )b SELECT COUNT(1) FROM #temp1 a LEFT JOIN #temp2 b ON a.字段名1=b.字段名2 WHERE a.长度1!=ISNULL(b.长度2,'') OR a.类型1!=ISNULL(b.类型2,''); SELECT COUNT(1) FROM #temp1 a RIGHT JOIN #temp2 b ON a.字段名1=b.字段名2 WHERE ISNULL(a.长度1,'')!=b.长度2 or b.类型2!=ISNULL(a.类型1,''); SELECT a.字段名1,b.字段名2,a.类型1,b.类型2,a.长度1,b.长度2 INTO #temp_1 FROM #temp1 a LEFT JOIN #temp2 b ON a.字段名1=b.字段名2 SELECT a.字段名1,b.字段名2,a.类型1,b.类型2,a.长度1,b.长度2 INTO #temp_2 FROM #temp1 a RIGHT JOIN #temp2 b ON a.字段名1=b.字段名2 SELECT * FROM #temp_1;
SELECT * FROM #temp_2; DROP TABLE #temp1; DROP TABLE #temp2; DROP TABLE #temp_1; DROP TABLE #temp_2;
GO
查询SQlServer相同表结构差异的更多相关文章
- 查询sqlserver数据库表的记录数
SELECT a.name, b.rows FROM sysobjects AS a INNER JOINsysindexes AS b ON a.id = b.idWHERE (a.type = ' ...
- SqlServer查询数据库所有表
//SqlServer查询数据库所有表SELECT * FROM SYSOBJECTS WHERE TYPE='U' and name like '%dict%'
- 【转载】C#常用数据库Sqlserver通过SQL语句查询数据库以及表的大小
在Sqlserver数据库中,一般我们查看数据库的大小可以通过查找到数据库文件来查看,但如果要查找数据表Table的大小的话,则不可通过此方法,在Sqlserver数据库中,提供了相应的SQL语句来查 ...
- SQLserver、MySQL、ORCAL查询数据库、表、表中字段以及字段类型
一.SQLServer命令 1.查询SQLServer中的每个数据库 SELECT * from sysdatabases 2.查询SQLServer中指定数据库的所有表名 select name f ...
- jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...
- NHibernate中,查询SqlServer数据库多个实体对象
关于datetime类型使用: Oracle: "and tb.EffectiveDate >= to_date(?,'yyyy-mm')" Sql: "an ...
- SQLSERVER新建表的时候页面分配情况是怎样的?
SQLSERVER新建表的时候页面分配情况是怎样的? 再次感谢sqlskill网站和转载sqlskill网站文章并翻译的人,因为您们的转载和翻译让小弟又学习到新的东西o(∩_∩)o 文章中用到的工具: ...
- sql server sql查询数据库的表,字段,主键,自增,字段类型等信息
1.查询数据表的属性(名称.说明.是否主键.数据类型.是否自增) SELECT t1.name columnName,case when t4.id is null then 'false' else ...
- SqlServer数据库表导入SqlLite数据库表保持日期时间类型字段的格式
在写查询功能的过程中遇到一个这样的问题:按日期范围查询,sql语句是:where dt>=用户选择起始日期&&dt<=用户选择结束日期.数据库中的数据如图1,我选择的测试数 ...
随机推荐
- JUnit注解
在本节中,我们将提到支持在JUnit4基本注释,下表列出了这些注释的概括: 注解 描述 @Testpublic void method() 测试注释指示该公共无效方法它所附着可以作为一个测试用例. @ ...
- CI框架 -- URI 路由
一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则:example.com/class/function/id/ 但是有时候,你可能想改 ...
- MOD 10,11算法(GB/T 17710-1999 数据处理 校验码系统 ),使用javascript实现
原文链接:http://chunniu.info/p/74.html GB/T 17710-1999 数据处理 校验码系统 ,便于使用,使用javascript做了一个页面 [php] var NUM ...
- 洞悉linux下的Netfilter&iptables:什么是Netfilter?
本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了.趁有时间,好好把这方面的东西总结一番.一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共 ...
- Java设计模式之十一种行为型模式(附实例和详解)
Java经典设计模式共有21中,分为三大类:创建型模式(5种).结构型模式(7种)和行为型模式(11种). 本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:J设计模式之五大创建型 ...
- 有术:DIY代理服务器
FQ有术:DIY代理服务器 公司HTTP代理穿透+手機ShadowSocks+SSH翻牆 利用SSH代理爬墙 http://bestvpnchina.net/
- 管道符和作业控制 shell变量 环境变量配置文件
8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 管道符和作业控制 管道符:表示把一个文件的输出内容传送到后面的命令 grep 用来过滤指定关键词的命令 “|” 为 ...
- spark1.4配置安装
https://segmentfault.com/a/1190000004508993
- mongoose实现批量删除和多id查询的api/方法
删除一条数据:传入id Model.remove({ _id: 传入的id }); 删除多条数据,传入id数组,使用$in方法 Model.remove({ _id: { $in: ['aID', ' ...
- 用FileExplorer查看android手机中的数据库
想查看一下手机中的通讯录数据库,google之后找到了办法. 参考: http://stackoverflow.com/questions/4867379/android-eclipse-ddms-c ...