Hive 合并两列,其中一列有空间

Hive 合并两列,其中一列有空间,hive,conditional,case,coalesce,Hive,Conditional,Case,Coalesce,我有一个表:customer,有三列。我想选择第一个NOTNULL列 选择ID合并(列A、列B) 来自客户 预期结果应为:101 AABB 实际结果为101空白 柱A可能有空间,我修剪柱 从customer中选择ID coalesce(修剪(columnA),ColumnB) 我得到了同样的结果:101个空白 如何获得结果:101 AABB? 列A可能有空格、空值和实际值使用CONCATNULL与空格不同。COALESCE将返回第一个非NULL值,因此您将获得空格 select ID,CONCA

我有一个表:customer,有三列。我想选择第一个NOTNULL列

选择ID合并(列A、列B) 来自客户

预期结果应为:101 AABB

实际结果为101空白

柱A可能有空间,我修剪柱

从customer中选择ID coalesce(修剪(columnA),ColumnB)

我得到了同样的结果:101个空白

如何获得结果:101 AABB?
列A可能有空格、空值和实际值

使用
CONCAT
NULL
与空格不同。
COALESCE
将返回第一个非NULL值,因此您将获得空格

select ID,CONCAT(trim(ColumnA),trim(ColumnB)) from customer
编辑

select ID, 
CASE WHEN ColumnA is null OR trim(ColumnA)=' ' then ColumnB else ColumnA END 
from customer

嗨,VK_217,如果我们只在ColumnA中有空间,它就可以工作。columnA中有空值、空格和实际值。如果columnA中有空值和空格,则选择ColumnB,否则选择columnA@Anson使用case语句确定值,然后决定选择columna或columnbHi VK_217,您是否可以编辑语句以选择ID,当columna为null或trim(columna)=“”时为case,然后选择ColumnB else columna END from customer,我会接受你的回答