一、问题

业务需要把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比较两表字段和字段类型的更多相关文章

  1. sql server 删除表字段和字段的约束

    删除数据库表中的字段时,使用了 :alter table 表名 drop column 列名 服务器返回的错误为:Server: Msg 5074, Level 16, State 1, Line 1 ...

  2. SQL动态更新表字段 传入字段可能为空

    小技巧: 项目组有修改产品的基本信息字段 但有时候传入的字段可能为空 也可能不为空  动态修改表中字段. USE [BetaProductMarket_DB] GO )) BEGIN DROP PRO ...

  3. sql查询表的所有字段和表字段对应的类型

    1.查询表的所有字段 select syscolumns.name from syscolumns where id=object_id('写上要查询的表名') 2.查询表的所有字段+表字段对应的类型 ...

  4. mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  5. mysql - 查看表字段和字段描述

    1.mysql查看表字段和字段描述 SELECT column_name, column_comment FROM information_schema.columns WHERE table_sch ...

  6. SQL语句修改表字段名/修改字段长度/增加字段/删除字段

    修改字段名Exec sp_rename 'zxchem_Suggest.End_Date','Yj_Finish_Date','Column' 修改字段长度Alter Table zxchem_Sug ...

  7. SQL SERVER 查看数据库表的字段类型,是否允许为NULL,默认值,主键等

    )-- 表名 set @table_name='bqcform101' --============表结构 select 类别,表名or字段名,描述,字段类型,是否自增,允许为NULL,默认值 fro ...

  8. 使用SQL查看表字段和字段说明

    MySql: show full columns from tableName; Sql server: SELECT A.name AS table_name, B.name AS column_n ...

  9. SQL把a表字段数据存到b表字段 update,,insert

    update SYS_Navigation set SYS_Navigation.PARENT_XH = SYS_Power_menu.parent_id,SYS_Navigation.web_tit ...

随机推荐

  1. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 07. View的Model 和 Tag Helpers

    student添加一个属性BirthDate 然后把生成数据的地方,字段也加上 建立ViewModel list转换为ViewModel 进一步改进代码 StudentViewModel HomeIn ...

  2. Bid和Ask

    一直很懵到底哪个是哪个,记吧,很快就又懵了.网上又坑,每一个解释清楚的.这次搞明白了记下来. 当然,这么逗比的取名法我也是醉了.直接加点东西,UserBuy,UserSell,BankBuy,Bank ...

  3. 洛谷P2219 [HAOI2007]修筑绿化带(单调队列)

    传送门 啧……明明以前做到过这种类型的题结果全忘了…… 这种矩阵的,一般都是先枚举行,然后对列进行一遍单调队列,搞出右下角在每一行中合法位置时的最小权值 再枚举列,对行做一遍单调队列,用之前搞出来的最 ...

  4. hive的使用 + hive的常用语法

    本博文的主要内容有: .hive的常用语法 .内部表 .外部表 .内部表,被drop掉,会发生什么? .外部表,被drop掉,会发生什么? .内部表和外部表的,保存的路径在哪? .用于创建一些临时表存 ...

  5. Python基础知识(2)

    1:if比较运算符.and.or >=:大于或者等于 <=:小于或者等于 ==:等于 !=:不等于  (<>:也是不等于,在Python2中可用.Python3中无法使用) a ...

  6. AtCoder Grand Contest 017 F - Zigzag

    题目传送门:https://agc017.contest.atcoder.jp/tasks/agc017_f 题目大意: 找出\(m\)个长度为\(n\)的二进制数,定义两个二进制数的大小关系如下:若 ...

  7. DP+埃氏筛法 Codeforces Round #304 (Div. 2) D. Soldier and Number Game

    题目传送门 /* 题意:b+1,b+2,...,a 所有数的素数个数和 DP+埃氏筛法:dp[i] 记录i的素数个数和,若i是素数,则为1:否则它可以从一个数乘以素数递推过来 最后改为i之前所有素数个 ...

  8. iOS 项目代码组织

    参考了很多系列,发现老外们都比较喜欢 group by type,这两个还不错: http://akosma.com/2009/07/28/code-organization-in-xcode-pro ...

  9. Jenkins视图使用--添加删除视图

    job建立的特别多的时候,我们可能不太容易找到自己的某个job,这时,我们就可以在Jenkins中建立视图.job的视图类似于我们电脑上的文件夹.可以通过一些过滤规则,将已经建好的job过滤到视图中, ...

  10. 设计模式(3)-- 原型模式 (clone分析)

    原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建对象. 在java中有语言级别的支持:clone 在java中使用原型模式是非常简单的事情,实现Cloneable接口,调用Objec ...