如何识别在 T-SQL Union 中导致数据类型错误的所有列?

米察布

我正在尝试对两个大表(超过 600 列)执行联合。两个表中的所有变量都应该具有相同的格式,但它们是由两个不同的团队分别准备的。

SELECT * into #FINAL_TABLE
from 
(select * from Table1
UNION
select * FROM Table2 ) as tmp

我收到一个错误,其中包含有关一列中数据类型错误的信息:

消息 8114,级别 16,状态 5,第 600 行
将数据类型 nvarchar 转换为数字时出错。

基于那个错误,我不能说:

  1. 哪一列导致错误?
  2. 是否还有其他列也会导致不匹配错误?

是否有更有效的方法来识别导致日期类型不匹配错误的所有列,然后逐列检查?

加布里埃尔·杜拉克

此查询应识别两个表之间的数据类型不匹配。

SELECT 
  IST1.COLUMN_NAME as Table1_column
  ,IST1.DATA_TYPE as Table1_datatype
  ,IST2.COLUMN_NAME as Table2_column
  ,IST2.DATA_TYPE as Table2_datatype
FROM information_schema.columns IST1
INNER JOIN information_schema.columns IST2 
  ON IST1.ORDINAL_POSITION=IST2.ORDINAL_POSITION
WHERE IST1.table_name='Table1' AND IST1.TABLE_SCHEMA='dbo'
AND IST2.table_name='Table2' AND IST2.TABLE_SCHEMA='dbo'
AND IST1.DATA_TYPE <> IST2.DATA_TYPE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章