代码之家  ›  专栏  ›  技术社区  ›  Chrisvdberge

当选择空字符串作为列时,SQL联合将考虑字符数

  •  -2
  • Chrisvdberge  · 技术社区  · 4 年前

    我有两个表,我用一个UNION ALL组合起来。表1中不存在表1中的列1,表1中也不存在该列。

    起初,我不需要表2中不在表1中的列,我使用 '' as Column1 在第二个选择中。这个很好用。

    但是,现在我还想检索只出现在表2中的列。当我试着像以前一样做的时候,结果在那个列中只有空值。

    结果查询考虑了第一个select语句中的字符数。所以当我这么做的时候 SELECT ' ' as Column2

    2 回复  |  直到 4 年前
        1
  •  0
  •   Gordon Linoff    4 年前

    你似乎想要:

    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 而不是 ''

        2
  •  0
  •   Chrisvdberge    4 年前

    将空值设为VARCHAR(50)就可以了。

    select t1.col1, t1.col2, t1.col3, CAST(null as VARCHAR(50)) as col4
    from table1 t1
    union all
    select t2.col1, t2.col2, CAST(null as VARCHAR(50)) as col3, t2.col4
    from table2 t2;