UNION ALL后Teradata字符串被截断

ido*_*dok 3 teradata union-all

我有一个UNION子句的查询.其中一个字段是普通的硬编码字符串.UNION之后的语句中的字符串被截断以匹配UNION之前的字段的字符串长度.听起来很混乱?这是一个例子.

SELECT 'abc' as xxx 
FROM tbl1
UNION ALL
select 'defghi' as xxx
FROM tbl2;
Run Code Online (Sandbox Code Playgroud)

对于上面的查询,我希望输出为

abc
defghi
Run Code Online (Sandbox Code Playgroud)

但是,输出是

abc
def
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

编辑: 解决方法,我知道目前是在UNION之前出现带有较长字符串的SELECT语句.即

SELECT 'defghi' as xxx 
FROM tbl2
UNION ALL
select 'abc' as xxx
FROM tbl1;
Run Code Online (Sandbox Code Playgroud)

这会给我预期的输出.但是有更好的选择吗?

ove*_*wed 9

采用第一种数据类型,但在这种情况下你可以将它转换为所需的数据类型,如char(6),否则列将保持为char(3)

SELECT CAST('abc' as char(6)) as xxx 
FROM tbl1
UNION ALL
select 'defghi' as xxx
FROM tbl2;
Run Code Online (Sandbox Code Playgroud)