栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL Server,将2个表与动态列进行比较

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL Server,将2个表与动态列进行比较

快速而肮脏的答案:这将逐列创建和比较两个表(必须具有与您指示的模式相同)的值。

它仅显示两个不相等的值,而不是所有列。这不包含空处理或错误处理。同样不建议在可能受到SQL注入的情况下使用此方法。一旦测试了它,就取消对EXEC的注释以运行动态SQL。

USE TEMPDBGODECLARE @SQL NVARCHAr(MAX), @SQL_OR NVARCHAr(MAX), @SQL_CASE NVARCHAr(MAX)SET @SQL=''SET @SQL_OR=''SET @SQL_CASE=''IF OBJECT_ID('tempdb.dbo.tmp1') IS NOT NULL DROp TABLE tempdb.dbo.tmp1IF OBJECT_ID('tempdb.dbo.tmp2') IS NOT NULL DROP TABLE tempdb.dbo.tmp2CREATE TABLE tempdb.dbo.tmp1 (keyField int identity(1,1), value1 int, value2 int)CREATE TABLE tempdb.dbo.tmp2 (keyField int identity(1,1), value1 int, value2 int)INSERT INTO tempdb.dbo.tmp1 (value1, value2)VALUES (555,1204),       (999,1255),       (666,9999),       (12345,12345)INSERT INTO tempdb.dbo.tmp2 (value1, value2)VALUES (555,1205),       (888,1255),        (666,9999),       (12345,NULL)SELECT @SQL_OR=@SQL_OR+' OR ISNULL(T1.['+TBL1.COLUMN_NAME+'],'''')!=ISNULL(T2.['+TBL1.COLUMN_NAME+'],'''')' + CHAr(13),       @SQL_CASE=@SQL_CASE+', CASE WHEN ISNULL(T1.['+TBL1.COLUMN_NAME+'],'''')!=ISNULL(T2.['+TBL1.COLUMN_NAME+'],'''') THEN ISNULL(ConVERT(NVARCHAR,T1.['+TBL1.COLUMN_NAME+']),''NULL'')+'' != ''+ISNULL(ConVERT(NVARCHAR,T2.['+TBL1.COLUMN_NAME+']),''NULL'') ELSE NULL END AS ['+TBL1.COLUMN_NAME+']' + CHAr(13)FROM INFORMATION_SCHEMA.COLUMNS TBL1WHERe TBL1.TABLE_NAME='tmp1'AND TBL1.COLUMN_NAME!='keyField'AND EXISTS (SELECt 1  FROM INFORMATION_SCHEMA.COLUMNS TBL2  WHERe TBL2.TABLE_NAME='tmp2'  AND TBL2.COLUMN_NAME!='keyField'  AND TBL1.COLUMN_NAME=TBL2.COLUMN_NAME)SET @SQL = 'SELECt T1.keyField'+@SQL_CASE+'  FROM tempdb.dbo.tmp1 T1 LEFT JOIN tempdb.dbo.tmp2 T2    ON T1.keyField=T2.keyField WHERe 1=2' + @SQL_ORPRINT @SQL--EXEC(@SQL)

输出:

keyField    value1      value21NULL        1204 != 12052999 != 888  NULL4NULL        12345 != NULL


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670051.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号