一、问题

业务需要把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. Windows下findstr命令的使用

    命令:findstr 参数解释 /b          如果位于行的开头则匹配模式. /e         如果位于行的末尾则匹配模式. /l         使用文字搜索字符串. /r        ...

  2. poj1664【DFS】

    思路:搜一下,还想多了,记得以前做过把一个数搞成几个数的相加组合,然后这题无非就是多了个组合的个数<=m的,那么只要多加一个条件,当num>m的时候也return掉就好了. //#incl ...

  3. 1856: [Scoi2010]字符串(Catalan数)

    1856: [Scoi2010]字符串 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 2117  Solved: 1211[Submit][Status] ...

  4. tcpdump笔记

    最好的学习: man tcpdump ....... 一.TCPdump抓包命令  tcpdump是一个用于截取网络分组,并输出分组内容的工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为类 ...

  5. php 中的引用(&)与foreach结合后的一个注意点

    关于php中引用的概念及foreach循环的的应用就不多说了,php文档已经说的很明白了.直接上一段代码: <?php $arr = array(1,2, 3); foreach($arr as ...

  6. Python基础知识(2)

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

  7. oracle 表空间及查看所有用户的表空间

    用户有默认表空间,但是只能指定一个,但是你有其它表空间的限额的话,可以将表建到其它表空间中. 语法 create table xxx(xxxx xx) tablespace xxxxx 1.查看当前用 ...

  8. 跟我一起玩Win32开发(1):关于C++的几个要点

    我不知道各位,一提起C++,第一感觉是什么?而据俺的观察,许多人几乎成了“谈C色变”.不管是C还是C++,一直以来都被很多人视为相当难学的玩意儿,幸好只是一个C++,没有C--,C**和C//,不然, ...

  9. jmeter(二十)JMeter中返回Json数据的处理方法

    Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...

  10. 用css来修饰页面文本

    <html> <head> <title>修饰文本字体</title> <style type="text/css"> ...