下面是我的选择查询
select
case
when mobile||', '||phoneoff <>', ' then mobile||', '||phoneoff
when phoneoff='' and mobile<>'' then mobile
when phoneoff<>'' and mobile='' then phoneoff
else 'NIL'
end as "Concat_result",phoneoff,mobile
from gtab12
结果
Concat_result| phoneoff | mobile
-------------------+------------+----------
9544070335, 2812111|2812111 |9544070335
NIL| |
, 0479-2436762|0479-2436762|
9495758057, | |9495758057
我试图实现的是,如果
phoneoff
和mobile
都有值,那么它应该与结果第一行的,
列连接起来如果
Concat_result
和phoneoff
是mobile
则= ''
应打印Concat_result
如果
NIL
和phoneoff<>''
那么mobile=''
应该只打印Concat_result
(见我的结果中的第3行,它显示phoneoff
和phoneoff
),对于,
预期结果
Concat_result| phoneoff | mobile
-------------------+------------+----------
9544070335, 2812111|2812111 |9544070335
NIL| |
0479-2436762 |0479-2436762|
9495758057 | |9495758057
最佳答案
一个简单的一行程序,它使用NULLIF()
&COALESCE()
(因此也可以处理NULL
值,而不仅仅是空字符串):
select coalesce(nullif(concat_ws(', ', nullif(phoneoff, ''), nullif(mobile, '')), ''), 'NIL') "Concat_result", phoneoff, mobile
from gtab12
关于sql - PostgreSQL:选择查询中的字符串串联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25484190/