我正在寻找删除我定义的值,如果行在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:
答案 0 :(得分:3)
使用CONCAT_WS()
:
CONCAT_WS(' ',
('Floor: ' || l1.floor),
('Unit: ' || l1.unit_number),
('Buzzer: ' || l1.buzzer)
) as R_ADDRESS2,
如果任何自变量为||
, NULL
将返回NULL
。但是,CONCAT_WS()
会忽略NULL
个参数,因此组合可以满足您的要求。
Here是db <>小提琴。
答案 1 :(得分:1)
concat
函数将忽略null
,而“常规”串联则不会。都使用它们。
CONCAT('Floor: ' + l1.floor + ' ', -- or cast(l1.floor as varchar) if it is int
'Unit: ' + l1.unit_number + ' ',
'Buzzer: ' + l1.buzzer) as R_ADDRESS2,