Select 地址忽略空白列

Select address ignoring blank columns

Ingres DB,属性数据如下

addr1
addr2
addr3
addr4
postcode

有些地址很短,因此在 addr3 或 addr4 中没有值。例如

addr1 : 14 Random Street
addr2 : City
addr3: 
addr4: 
postcode : LT1 5GH

邮政编码总是被填充。

如何使用 SQL select 连续字段中的地址元素?

所以我想要的输出如下

14 Random Street, City, LT1 5GH
Flat 5, 15 Random Street, District, London, E35 5FG
67 Whatever Crescent, Lovely Street, Eastwich, LH6 &GH

您可以使用 case 表达式进行尝试。

case when addr1<> '' and addr1 is not null then addr1 +',' else '' end +
case when addr2<> '' and addr2 is not null then addr2 +',' else '' end +
case when addr3<> '' and addr3 is not null then addr3 +',' else '' end +
case when addr4<> '' and addr4 is not null then addr4 +',' else '' end +
zip

如果 + 不是 ingres 中的串联运算符,则使用 concat 或类似函数。

SELECT CONCAT( CASE WHEN ISNULL(Add1,'') <> '' THEN Add1 + ',' END , CASE WHEN ISNULL(Add2,'') <> '' THEN Add2 + ' ,' END,CASE WHEN ISNULL(Add3,'') <> '' THEN Add3 + ',' END,CASE WHEN ISNULL(Add4,'') <> '' THEN Add4 + ',' END,CASE WHEN ISNULL(邮政编码,'') <> '' THEN 邮政编码结束)