首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何识别在T中导致数据类型错误的所有列?

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

Stack Overflow用户
提问于 2021-06-30 01:44:55
回答 3查看 443关注 0票数 0

我正试图在两张大表( 600多列)上执行联合操作。两个表中的所有变量都应该具有相同的格式,但它们是由两个不同的团队单独准备的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * into #FINAL_TABLE
from 
(select * from Table1
UNION
select * FROM Table2 ) as tmp

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

Msg 8114,16级,状态5,线路600

将数据类型nvarchar转换为数字时出错。

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

  1. 哪个列导致了错误?
  2. 还有其他列也会导致错配错误吗?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-30 02:03:52

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
票数 2
EN

Stack Overflow用户

发布于 2021-06-30 02:02:49

您可以这样做,这将返回数据类型不一致的表名和列名。但评论中的要点确实站得住脚:

应该在SELECT *

  • Having中显式定义列,而不是在单个表中使用SELECT *

  • Having 600列,这无疑是一个设计缺陷,应该加以解决。特别是当您想要UNION数据

时。

另外,如果您正在合并数据,我怀疑您需要的是UNION ALL,而不是UNION。我怀疑你的任何行在这里都是重复的,因为:

  1. 您有600个列,这意味着所有600个需要在两个单独的行上相同--
  2. --两个表有不同的定义,这意味着两个表不能有重复的。

无论如何,一种方法是使用dm_exec_describe_first_result_set获取返回结果集的详细信息,然后从两个结果集比较位于相同序号位置的列的数据类型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT T1.[name] AS Table1Column,
       T1.system_type_name AS Table1Type,
       T2.[name] AS Table2Column,
       T2.system_type_name AS Table2Type
FROM sys.dm_exec_describe_first_result_set(N'SELECT * FROM Table1;',NULL,NULL) T1
     JOIN sys.dm_exec_describe_first_result_set(N'SELECT * FROM dbo.Table2;',NULL,NULL) T2 ON T1.column_ordinal = T2.column_ordinal
WHERE T1.system_type_id <> T2.system_type_id;
票数 0
EN

Stack Overflow用户

发布于 2021-06-30 07:19:43

对于SQL 2017及以上版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @SomeString varchar(100) = 'ABC_DEF_GHI_jkl';
WITH T0 AS
(
SELECT 1 AS INDICE, 
       SUBSTRING(@SomeString, 1, 1) AS RAW_LETTER, 
       SUBSTRING(UPPER(@SomeString), 1, 1) AS UP_LETTER
UNION ALL
SELECT INDICE + 1, 
       SUBSTRING(@SomeString, INDICE + 1, 1) AS RAW_LETTER, 
       SUBSTRING(UPPER(@SomeString), INDICE + 1, 1)
FROM   T0
WHERE  INDICE < LEN(@SomeString)
)
SELECT STRING_AGG(RAW_LETTER, '') WITHIN GROUP (ORDER BY INDICE)
FROM   T0
WHERE  RAW_LETTER COLLATE Latin1_General_BIN = UP_LETTER;

对于2017年之前的Server:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WITH T0 AS
(
SELECT 1 AS INDICE, 
       SUBSTRING(@SomeString, 1, 1) AS RAW_LETTER, 
       SUBSTRING(UPPER(@SomeString), 1, 1) AS UP_LETTER
UNION ALL
SELECT INDICE + 1, 
       SUBSTRING(@SomeString, INDICE + 1, 1) AS RAW_LETTER, 
       SUBSTRING(UPPER(@SomeString), INDICE + 1, 1)
FROM   T0
WHERE  INDICE < LEN(@SomeString)
)
SELECT STUFF((SELECT '' + RAW_LETTER
              FROM   T0
              WHERE  RAW_LETTER COLLATE Latin1_General_BIN = UP_LETTER
              FOR XML PATH('')), 1, 0, '');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68192361

复制
相关文章
C++中的wchar_t数据类型
Type whose range of values can represent distinct codes for all members of the largest extended character set specified among the supported locales.
用户7886150
2021/02/19
9650
性别在数据库中的数据类型_mysql常用的数据类型有哪些
例如: create table t2(x int(5) unsigned zerofill); insert into t2 values(10); select * from t2;
全栈程序员站长
2022/09/20
1.7K0
性别在数据库中的数据类型_mysql常用的数据类型有哪些
在Pandas中更改列的数据类型【方法总结】
有什么方法可以将列转换为适当的类型?例如,上面的例子,如何将列2和3转为浮点数?有没有办法将数据转换为DataFrame格式时指定类型?或者是创建DataFrame,然后通过某种方法更改每列的类型?理想情况下,希望以动态的方式做到这一点,因为可以有数百个列,明确指定哪些列是哪种类型太麻烦。可以假定每列都包含相同类型的值。
kirin
2021/04/19
20.5K0
在Pandas中更改列的数据类型【方法总结】
索引列顺序导致的性能问题
今天和大家分享一个很有意思的例子,关于索引列的顺序导致的性能问题。 发现数据库的性能比较差,CPU消耗很高,抓了一个awr,发现瓶颈在sql上,top 1的sql是一个很简单的update语句,没有复杂的条件和表关联。 竟然导致CPU 99% 抓了一个explain plan 的report和自己的理解,先简单说明一下表的情况。 表,TEST_NOTIF_REQ_LOG, 主键基于两个列(partition_key,NOTIFICATION_SEQ_NO),执行计划,update语句,还有数据分布大体如下,
jeanron100
2018/03/13
1.2K0
索引列顺序导致的性能问题
把表中的所有错误自动替换为空?这样做就算列数变了也不怕!
小勤:这个我知道啊。但是这个表的列是动态的,下次多了一列这个方法就不行了,又得重新搞一遍。
大海Power
2021/08/30
2.1K0
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
问与答62: 如何按指定个数在Excel中获得一列数据的所有可能组合?
Q:数据放置在列A中,我要得到这些数据中任意3个数据的所有可能组合。如下图1所示,列A中存放了5个数据,要得到这5个数据中任意3个数据的所有可能组合,如列B中所示。如何实现?
fanjy
2019/08/13
5.6K0
问与答62: 如何按指定个数在Excel中获得一列数据的所有可能组合?
如何提取PPT中的所有图片
1、 首先,我们打开一个含有图片的PPT,点菜单“文件”--“另存为”;在“另存为”对话框中,选择保存类型为“网页”,点保存; 2、打开我们保存文件的目录,会发现一个带有“******.files”的文件夹; 3、双击该文件夹,里面的文件类型很多,再按文件类型排一下序,看一下,是不是所有的图片都在里面了,一般图片为jpg格式的;
P轴
2022/11/18
7K0
【DB笔试面试540】在Oracle中,如何列举某个用户下所有表的注释及列的注释?
可以使用DBA_TAB_COMMENTS视图来查询表的注释,使用DBA_COL_COMMENTS视图来查询列的注释。它们的示例分别如下所示:
AiDBA宝典
2019/09/29
2.9K0
【DB笔试面试540】在Oracle中,如何列举某个用户下所有表的注释及列的注释?
porm导致项目运行错误
由于创建moduel基于原来项目之上导致porm会继承原有项目导致运行错误 解决:删除继承关系 relative
全栈程序员站长
2022/07/02
8540
porm导致项目运行错误
图像识别在测试中的应用
介绍到这里会有人问,有了webdriver等ui自动化后为什么还要用图像识别呢?我认为主要有以下这几点:
霍格沃兹测试开发Muller老师
2022/06/13
8700
【说站】php.ini中屏蔽所有错误的方法
1、打开“php.ini”配置文件,在其中搜索“display_errors”项。
很酷的站长
2022/11/26
9310
【说站】php.ini中屏蔽所有错误的方法
EasyGBS内存错误导致服务崩溃该如何解决?
国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发,分发的视频流包括RTSP、RTMP、FLV、HLS、WebRTC等格式。
TSINGSEE青犀视频
2022/07/13
5490
空指针错误导致tomcat报404错误
项目代码的异常类型为500 400 没有404错误 线上却偶尔报404错误,导致成功率低于99% 追查发现是由于一个空指针错误,未被捕获抛出指定项目异常 mark
架构师刀哥
2018/03/20
1.4K0
将MapperScan错误使用导致的BindingException问题
在前面的代码中,使用fluent mybatis的mapper对表进行增删改查都没有问题。 但是fluent mybatis官方也说了,自动会生成dao层代码,将dao及其实现类都生成好了。因此也想尝试下生成的代码使用的效果。 此外,由于不想建多个project来进行测试,因此对于不同的测试,都在src/main/java下面弄各种不同的包来进行区分。本次测试的package:com.dhb.gts.javacourse.week6.mysqltest目录。
冬天里的懒猫
2021/09/22
1.5K0
iOS 时间格式错误导致的坑
我们的项目中有个功能是根据昨天到当前时间去查找记录,可是就在圣诞节过后,出现了问题,查找记录查找不到了?最后发现时间区间是:2019-12-26 3:00:00-----2019-12-27 23:15:45,怎么回事呢?只有年份不对,年份应该是2018年啊!代码没有问题啊!找了好久,最后发现时间格式设置不对! 好大的坑!
honey缘木鱼
2019/02/21
3.3K0
Mysql中的列类型
支持的范围是1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
Tony He
2022/11/17
6.5K0
错误cron导致linux宕机 原
MAILTO是针对用户配置的,于是将该参数加入/var/spool/cron/internal下;
阿dai学长
2019/04/03
3.3K0
点击加载更多

相似问题

如何识别在运行时导致错误的代码行

15

熊猫识色

10

如何识别在List<T>中更改了对象的哪些属性

112

如何更改StructType或ArrayType列中的所有列数据类型?

11

如何根据其他列的级别在表中设置新列?

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文