下面是我的选择查询

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

我试图实现的是,如果phoneoffmobile都有值,那么它应该与结果第一行的,列连接起来
如果Concat_resultphoneoffmobile= ''应打印Concat_result
如果NILphoneoff<>''那么mobile=''应该只打印Concat_result(见我的结果中的第3行,它显示phoneoffphoneoff),对于,
预期结果
      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/

10-09 07:08