【发布时间】:2019-03-13 02:19:51
【问题描述】:
当我们对具有不同数据类型的两个表执行UNION 时,由于 SQL 标准,预期的行为是什么:
create table "tab1" ("c1" varchar(max));
create table "tab2" ("c3" integer);
insert into tab1 values(N'asd'), (N'qweqwe');
insert into tab2 values(123), (345);
select
c_newname as myname
from
(
select "c1" as c_newname from "tab1"
union all
select "c3" from "tab2"
) as T_UNI;
MS SQL Server给了
将 varchar 值“asd”转换为数据类型时转换失败 诠释。
但是标准中定义了什么?
【问题讨论】:
-
不确定“tab3”的来源,但您不能合并两种不同的数据类型。这就是 SQL Server 告诉你的。
-
@ChristianBarron 谢谢,tab3 是 tab1,抱歉。我明白 SQL Server 告诉我什么,我想知道 SQL 标准在这个问题上是怎么说的。
标签: sql sql-server tsql standards union-all