我目前正在处理一个查询,将多列连接成一个字符串,并使用逗号(,)作为分隔符。我无法解决如何处理空值的问题。
DECLARE
@item1 nvarchar(max) = 'a',
@item2 nvarchar(max) = 'b',
@item3 nvarchar(max) = 'c'
SELECT CONCAT(
ISNULL(NULLIF(@item1, '') + ', ', ''),
ISNULL(NULLIF(@item2, '') + ', ', ''),
ISNULL(NULLIF(@item3, ''), '')
)
--@item1 = 'a', @item2 = 'b', @item3 = 'c'
--Output : a, b, c
--@item1 = 'a', @item2 = NULL, @item3 = 'c'
--Output : a, c
--@item1 = NULL, @item2 = 'b', @item3 = 'c'
--Output : b, c
以上代码在@item1
或@item2
或两者都为NULL值时运行良好,但如果@item3
是NULL值,则会在结尾处多出一个逗号(,)
--@item1 = 'a', @item2 = 'b', @item3 = NULL
--Output : a, b,
--@item1 = 'a', @item2 = NULL, @item3 = NULL
--Output : a,
我知道这是因为在
NULLIF
语句中硬编码了逗号(,)导致的,但我无法想出其他更好的解决方法。对此有何建议或更好的解决方案?