首页 > 解决方案 > 选择空字符串作为列时,SQL UNION 考虑了字符数

问题描述

我有两个使用 UNION ALL 组合的表。表 1 有 1 列不存在于表 2 中,表 2 也有 1 列不存在于表 1 中。

起初我不需要表 2 中不在 table1 中的列,我'' as Column1在第二个选择中做了一个 SELECT 查询。这工作得很好。

但是,现在我还想检索仅存在于 table2 中的列。当我尝试像以前一样做同样的事情时,我最终在该列中只有空值。

结果是查询从第一个 select 语句中考虑了字符数。因此,当我这样做时,我会SELECT ' ' as Column2得到 table2 中所有值的前 2 个字符。这反过来起作用,因为我首先得到了实际值。但是现在我需要先制作空列我不确定如何最好地做到这一点?当然,我可以只使用一个有 50 个空格之类的字符串作为第一个选择,但肯定有更好的方法吗?

标签: sqlunion

解决方案


你似乎想要:

select t1.col1, t1.col2, t1.col3, null as col4
from table1 t1
union all
select t2.col1, t2.col2, null as col3, t2.col4
from table2 t2;

我建议使用NULL而不是'',除非你真的想要一个空字符串。


推荐阅读