[英]Insert line break into SQL query return after concatenating columns whilst skipping NULL values
我想將幾列連接在一起,並在考慮到NULL
值的情況下以換行符分隔每列返回。
例如,我有以下數據表( [dbo].[Address]
):
Name Address_line1 Address_line2 Address_line 3 Postcode
Mr Smith 1 Smith Street NULL Ireland AB1 1CD
Mr Jones 1 Jones Road Wales NULL EF2 3GH
Mrs White 1 White Way England UK NULL
我想返回以下內容:
Name Address
Mr Smith 1 Smith Street,
Ireland,
AB1 1CD
Mr Jones 1 Jones Road,
Wales,
EF2 3GH
Mrs White 1 White Way,
England,
UK
我該怎么做呢?
您可以結合使用+
運算符和COALESCE()
:
WITH T AS (SELECT 'Mr Smith' AS NAME, '1 Smith Street' AS Address_Line1, NULL AS Address_line2, 'Ireland' AS Address_Line3, 'AB1 1CD' AS PostCode
UNION SELECT 'Mr Jones' AS NAME, '1 Jones Road' AS Address_Line1, 'Wales' AS Address_line2, NULL AS Address_Line3, 'EF2 3GH' AS PostCode
UNION SELECT 'Mrs White' AS NAME, '1 White Way' AS Address_Line1, 'England' AS Address_line2, 'UK' AS Address_Line3, NULL AS PostCode
)
SELECT NAME, ADDRESS_LINE1
+ COALESCE(','+ CHAR(13)+CHAR(10) + Address_line2 , '')
+ COALESCE ',' + (CHAR(13)+CHAR(10) +Address_line3 ,'')
+ COALESCE(',' + CHAR(13)+CHAR(10) +POSTCODE,'') AS ADDRESS
FROM T
輸出:
NAME
--------- --------------------------------------------
Mr Jones 1 Jones Road,
Wales,
EF2 3GH
Mr Smith 1 Smith Street,
Ireland,
AB1 1CD
Mrs White 1 White Way,
England,
UK
你有嘗試過嗎?
select name,
replace(stuff( coalesce('[sep]' + address_line1, '') +
coalesce('[sep]' + address_line2, '') +
coalesce('[sep]' + address_line3, ''),
1, 5, ''
), '[sep]', '
'
)
. . .
您可以像這樣使用CHAR(13)
select Name,
Address_line1 + ',' +char(13) + Address_line2 + ',' + char(13) + Address_line 3 as address
from [dbo].[Address]
SELECT
name,
CONCAT(
COALESCE(Address_line1,''), ', ',
COALESCE(Address_line2,''), ', ',
COALESCE(Address_line3,''), ', ',
COALESCE(Postcode,'')
) AS address
FROM table_name;
我更喜歡將ISNULL()與Char(13)+ CHAR(10)結合使用:
SELECT
Name
, ISNULL(Address_line1 + ',' + CHAR(13)) + CHAR(10), '') + ISNULL(Address_line2 + ',' + CHAR(13)) + CHAR(10), '') + ISNULL(Address_line 3, '') as address
from [dbo].[Address]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.