gpt4 book ai didi

sql - UNION 原因 "Conversion failed when converting the varchar value to int"

转载 作者:行者123 更新时间:2023-12-02 17:47:49 25 4
gpt4 key购买 nike

我尝试搜索以前与此相关的文章,但找不到适合我情况的文章。因为我是 StackOverflow 的新手,所以无法发布图片,所以我会尝试描述它。

我有两个数据集。一个是 34 行,1 列全部为 NULL。其他 13 行 1 列 varchar

当我尝试将这两个UNION ALL结合在一起时,出现以下错误:

Conversion failed when converting the varchar value to data type int.

我不明白为什么会出现此错误。我之前已经 UNION 编辑过许多 NULL 列和 varchar 列以及许多其他类型,但我没有收到此转换错误。

任何人都可以提出为什么会出现此错误的建议吗?

最佳答案

发生错误的原因是两个子查询中有对应的列,其中一个的类型是整数,另一个的类型是字符。然后,字符值至少在一行中具有无法自动转换为整数的值。

这很容易复制:

select t.*
from (select 'A' as col union all
select 1
) t;

Here就是对应的SQL Fiddle。

SQL Server 使用相当复杂的类型优先规则来确定联合中的目标类型。但实际上,最好避免使用隐式类型转换。相反,将列显式转换为您想要的类型。

编辑:

NULL 值的情况很复杂。 本身NULL 值没有类型。因此,以下工作正常:

select NULL as col
union all
select 'A';

如果输入NULL,则查询将失败:

select cast(NULL as int) as col
union all
select 'A';

此外,如果您将 SQL Server 置于必须分配类型的位置,则 SQL Server 会将 NULL 设为整数。表或结果集中的每一列都需要一个类型,因此这也会失败:

select (select NULL) as col
union all
select 'A';

也许您的查询正在执行类似的操作。

关于sql - UNION 原因 "Conversion failed when converting the varchar value to int",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com