我想删除一个我定义的值,如果一行在CONCAT函数中返回NULL。
我不完全确定如何去做..
CONCAT('Floor:', ' ', l1.floor, ' ', 'Unit:', ' ', l1.unit_number, ' ', 'Buzzer:', ' ', l1.buzzer) as R_ADDRESS2,
如果行为NULL,我希望每个值的实例都为空。因此,如果l1.floor
返回NULL,那么'Floor:', ' '
也不会出现在R_ADDRESS2
的列中。同样适用于l1.unit_number
和l1.buzzer
。
我该怎么办?
编辑:以下是它目前的显示方式:
r_address2
Floor: 10 Unit: Buzzer:
Floor: 2 Unit: 200 Buzzer:
Floor: Unit: Buzzer:
使用CONCAT_WS()
:
CONCAT_WS(' ',
('Floor: ' || l1.floor),
('Unit: ' || l1.unit_number),
('Buzzer: ' || l1.buzzer)
) as R_ADDRESS2,
如果有任何论据是||
,NULL
会返回NULL
。然而,CONCAT_WS()
忽略了NULL
论点,所以组合做你想要的。
Here是一个db <>小提琴。
concat
函数忽略null
s,“通常”连接不。同时使用它们。
CONCAT('Floor: ' + l1.floor + ' ', -- or cast(l1.floor as varchar) if it is int
'Unit: ' + l1.unit_number + ' ',
'Buzzer: ' + l1.buzzer) as R_ADDRESS2,