SQL比较两表字段和字段类型
一、问题
业务需要把TB_Delete_KYSubProject表数据恢复到TB_KYSubProject,但提示错误,错误原因是两表字段类型存在不一致

insert into [TB_KYSubProject] SELECT * from [TB_Delete_KYSubProject]
WHERE [TB_Delete_KYSubProject].id = 'A49CFC7B-8F9D-476F-B853-CA62C18E2D03'
二、方法
一个个字段比对很麻烦,所以用以下sql 查询出两表字段不一致
可以用查询表的字段信息
SELECT OBJECT_NAME(c.object_id) AS TableName ,
c.name AS ColumnsName ,
t.name AS ColumnType ,
c.max_length AS Length
FROM sys.columns c
INNER JOIN systypes t ON c.system_type_id = t.xtype
WHERE c.object_id = OBJECT_ID('TB_Delete_KYSubProject')
AND T.NAME <> 'sysname'
SELECT c.name AS ColumnsName ,
t.name AS ColumnType ,
c.max_length AS Length
FROM sys.columns c
INNER JOIN systypes t ON c.system_type_id = t.xtype
WHERE c.object_id = OBJECT_ID('TB_Delete_KYSubProject')
AND T.NAME <> 'sysname'
EXCEPT
SELECT c.name AS ColumnsName ,
t.name AS ColumnType ,
c.max_length AS Length
FROM sys.columns c
INNER JOIN systypes t ON c.system_type_id = t.xtype
WHERE c.object_id = OBJECT_ID('TB_KYSubProject')
AND T.NAME <> 'sysname'

得到两个表具体哪里不一致
SELECT OBJECT_NAME(c.object_id) AS TableName ,
c.name AS ColumnsName ,
t.name AS ColumnType ,
c.max_length AS Length
FROM sys.columns c
INNER JOIN systypes t ON c.system_type_id = t.xtype
WHERE c.object_id = OBJECT_ID('TB_Delete_KYSubProject')
AND T.NAME <> 'sysname'
AND c.name IN ( 'FrequencyCount', 'IsDelete', 'PortNumber' ) SELECT OBJECT_NAME(c.object_id) AS TableName ,
c.name AS ColumnsName ,
t.name AS ColumnType ,
c.max_length AS Length
FROM sys.columns c
INNER JOIN systypes t ON c.system_type_id = t.xtype
WHERE c.object_id = OBJECT_ID('TB_KYSubProject')
AND T.NAME <> 'sysname'
AND c.name IN ( 'FrequencyCount', 'IsDelete', 'PortNumber' )

扩展:
获取表字段说明
SELECT c.name AS ColumnsName ,
t.name AS ColumnType ,
c.max_length AS Length ,
CAST(ep.[value] AS VARCHAR(100)) AS [字段说明]
FROM sys.columns c
INNER JOIN systypes t ON c.system_type_id = t.xtype
LEFT JOIN sys.extended_properties AS ep ON ep.major_id = c.object_id
AND ep.minor_id = c.column_id
WHERE c.object_id = OBJECT_ID('TB_Delete_SJSubProject')
AND T.NAME <> 'sysname'
AND ep.class = 1

SQL比较两表字段和字段类型的更多相关文章
- sql server 删除表字段和字段的约束
删除数据库表中的字段时,使用了 :alter table 表名 drop column 列名 服务器返回的错误为:Server: Msg 5074, Level 16, State 1, Line 1 ...
- SQL动态更新表字段 传入字段可能为空
小技巧: 项目组有修改产品的基本信息字段 但有时候传入的字段可能为空 也可能不为空 动态修改表中字段. USE [BetaProductMarket_DB] GO )) BEGIN DROP PRO ...
- sql查询表的所有字段和表字段对应的类型
1.查询表的所有字段 select syscolumns.name from syscolumns where id=object_id('写上要查询的表名') 2.查询表的所有字段+表字段对应的类型 ...
- mysql中修改表字段名/字段长度/字段类型详解
在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...
- mysql - 查看表字段和字段描述
1.mysql查看表字段和字段描述 SELECT column_name, column_comment FROM information_schema.columns WHERE table_sch ...
- SQL语句修改表字段名/修改字段长度/增加字段/删除字段
修改字段名Exec sp_rename 'zxchem_Suggest.End_Date','Yj_Finish_Date','Column' 修改字段长度Alter Table zxchem_Sug ...
- SQL SERVER 查看数据库表的字段类型,是否允许为NULL,默认值,主键等
)-- 表名 set @table_name='bqcform101' --============表结构 select 类别,表名or字段名,描述,字段类型,是否自增,允许为NULL,默认值 fro ...
- 使用SQL查看表字段和字段说明
MySql: show full columns from tableName; Sql server: SELECT A.name AS table_name, B.name AS column_n ...
- SQL把a表字段数据存到b表字段 update,,insert
update SYS_Navigation set SYS_Navigation.PARENT_XH = SYS_Power_menu.parent_id,SYS_Navigation.web_tit ...
随机推荐
- HDU 5878 I Count Two Three (预处理+二分查找)
题意:给出一个整数nnn, 找出一个大于等于nnn的最小整数mmm, 使得mmm可以表示为2a3b5c7d2^a3^b5^c7^d2a3b5c7d. 析:预处理出所有形为2a3 ...
- 数据库连接 ADO,OLEDB,ODBC,DAO的区别 转载
http://blog.csdn.net/ithomer/article/details/6624684 ODBC(Open Database Connectivity,开放数据库互连) 1992年, ...
- angular源码剖析之Provider系列--CacheFactoryProvider
CacheFactoryProvider 简介 源码里是这么描述的: Factory that constructs {@link $cacheFactory.Cache Cache} objects ...
- E20180427-hm
创建: 2018/04/27 dissolve vi. 溶解; 融化,液化; 解散,散去; 分裂,分解; vt. 使溶解; 使(固态物)溶解为液体,使液化; 使消失,使消逝,消除; 使终止; c ...
- Thrift 原理与使用实例
一.Thrift 框架介绍 1.前言 Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目.Thrift通过一个中间语言(IDL, 接口定 ...
- C++笔试题(三)
普天是南京一家通信公司,全称为:南京普天通信股份有限公司,公司网址为:http://www.postel.com.cn 网上流传一套普天C++笔试题,我将我做的答案公布与此,仅供参考. 1.实现双向链 ...
- Codeforces Round #422 (Div. 2) C. Hacker, pack your bags!(更新数组)
传送门 题意 给出n个区间[l,r]及花费\(cost_i\),找两个区间满足 1.区间和为指定值x 2.花费最小 分析 先用vector记录(l,r,cost)和(r,l,cost),按l排序,再设 ...
- 洛谷P3209 [HNOI2010]平面图判定(2-SAT)
传送门 看到哈密顿回路就被吓傻了……结果没有好好考虑性质…… 首先,平面图有个性质:边数小于等于$3n-6$(我也不知道为啥),边数大于这个的直接pass 然后考虑原图,先把哈密顿回路单独摘出来,就是 ...
- 第一篇 .NET高级技术之索引器
基础知识补充 索引 器 没有名字 ,索引器的内部本质 (ILSpy的IL模式下看)类型 this[参数]{get;set;} 可以是只读或者只写(在get或者set前加上private) 字符串是只读 ...
- jQuery同时监听两个事件---实现同时操控两个按键
我们都知道因为js是单线程的,所以没有可以同时触发键盘两个事件的方法 今天我们就来做一个可以实现这个功能方法 先来看一下成品图效果 接下来我们来看下具体是怎么实现的 注释写在了代码里面 <!DO ...