查询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,我选择的测试数 ...
随机推荐
- Java并发编程笔记—摘抄—基础知识
什么是线程安全 当多个线程访问某个类时,不管运行环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的. 竞态 ...
- Java如何格式化AM-PM格式的时间?
在JAVA中,如何格式化AM-PM格式的时间? 该示例使用SimpleDateFormat(“HH-mm-ss a”)构造函数和SimpleDateFormat类的sdf.format(date)方法 ...
- 弹出输入框后,将listview内容遮住,解决方案
转自http://blog.csdn.net/silence_cdsn/article/details/7987063 更改listview的布局属性 之前的布局: <ListView andr ...
- Java与编码问题串讲之二–如何理解java采用Unicode编码
Java开发者必须牢记:在Java中字符仅以一种形式存在,那就是Unicode(不选择任何特定的编码,直接使用他们在字符集中的编号,这是统一的唯一方法).由于java采用unicode编码,char ...
- mothur summary.seqs 统计fasta文件中每条序列的长度
在介绍summary.seqs的用法之前,我们首先需要搞清楚两个概念: 1)ambiguous bases 中文叫做模糊碱基,对于DNA序列来说,只有ATCG 4种碱基,在IUPAC定义的碱基标准中, ...
- 转 linux 权限
发布系统架构图简化如下: 管理员通过Jenkins调用“发布程序(代号varian,以下简称varian)”,发布程序会进行一系列的初始化操作,完成后生成Docker镜像上传到Docker仓库,容器集 ...
- tomcat启动时设定环境变量
在tomcat的bin目录中修改startup.bat 设置CATALINA_HOME set "CATALINA_HOME=F:\solr\apache-tomcat\apache-tom ...
- vue二级联动select
<div> <span>所在区域</span> <select name="" v-model="country"&g ...
- Android开发学习笔记-SharedPreferences的用法
SharedPreferences介绍: 做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...
- JVM垃圾回收机制之引用类型
一:引用的类型 javac编译器编译源文件后,生成字节码文件,在类加载器加载字节码文件到内存中时,在内存中开辟 空间,栈.堆以及方法区,来存放对象以及引用.引用可以分为四种: 强引用:平常我们在编写程 ...