UNION和字面值,奇怪的结果

时间:2018-05-16 20:35:12

标签: sql-server union

今天我遇到了一些奇怪的东西(或者我厌倦了看到明显的东西)

免责声明:无需继续阅读......是的,我累了,这是胡说八道......

SQL-Server:11.0.6251.0

我回答this question并看到,所有行都有一个" E"首先。

这是相同的简短

DECLARE @tblA TABLE(Id INT,SomeValue VARCHAR(100));
INSERT INTO @tblA VALUES (1,'blah');

DECLARE @tblB TABLE(Id INT,SomeValue VARCHAR(100));
INSERT INTO @tblA VALUES (2,'blub');

SELECT 'A' AS SourceFlag, Id, SomeValue
FROM @tblA
UNION ALL
SELECT 'B', Id, SomeValue
FROM @tblB

我回来了

SourceFlag  Id  SomeValue
A           1   blah
A           2   blub

为什么第二行没有得到" B"?

执行计划:

enter image description here

一个 Compute Scalar 显示 [Expr1004] = Skalaroperator(' A')另一个显示 [Expr1009] = Skalaroperator(& #39; B&#39)

Concatenation 将结果定义为 Union1010; Union1011; Union1012 ,而 Union1010 [Union1010] =(Expr1004; Expr1009)中定义; [Union1011] =(Id; Id); [Union1012] =(SomeValue; SomeValue)

1 个答案:

答案 0 :(得分:3)

没有数据插入@tblB。 ID 2已插入@tblA

DECLARE @tblB TABLE(Id INT,SomeValue VARCHAR(100));
INSERT INTO @tblA VALUES (2,'blub');