我有一个源表,其中包含AreaCodeMobile + MobilePhoneNumber,AreaCodeHome + HomeNumber,AreaCodeOffice + OfficeNumber列,我想将它们合并到目标表中的一个电话列中。我该怎么办?
答案 0 :(得分:0)
这些列的数据类型是什么?另外,您要保存在目标列中的任何格式吗?如果它们都是int数据类型,则需要使用CAST转换为varchar。例如
DECLARE @AreaCodeMobile int = 833, @MobilePhoneNumber INT = 7571256
DECLARE @areacodehome INT = 877, @homenumber INT = 2968997
DECLARE @areacodeoffice INT = 247 , @officenumber INT = 8658734
select CONCAT (
'Mobile Phone Number: ' , cast(@areacodemobile as varchar(50)) , cast(@MobilePhoneNumber as varchar(50))
,' Home Number: ', CAST(@areacodehome as varchar(50)) , cast(@homenumber as varchar(50))
,' Office Number: ', CAST(@areacodeoffice as varchar(50)) , cast(@officenumber as varchar(50))
)
答案 1 :(得分:0)
只需使用CONCAT。
并使用+
前缀逗号或您喜欢的任何分隔符。
SELECT t.*,
CONCAT(AreaCodeMobile,
', '+MobilePhoneNumber,
', '+AreaCodeHome,
', '+HomeNumber,
', '+AreaCodeOffice,
', '+OfficeNumber) AS [Telephones]
FROM YourTable t;
这里的窍门是CONCAT将忽略NULL。
但是,如果添加NULL,则+
将导致NULL。
因此,没有为空值添加无用的逗号。
或者,如果您的Sql Server版本支持,也可以使用CONCAT_WS。
SELECT t.*,
CONCAT_WS(', ', AreaCodeMobile, MobilePhoneNumber, AreaCodeHome, HomeNumber, AreaCodeOffice, OfficeNumber) AS [Telephones]
FROM YourTable t;
因此,要更新表中的该列,也许是这样的:
UPDATE YourTable
SET Telephones = CONCAT_WS(', ', AreaCodeMobile, MobilePhoneNumber, AreaCodeHome, HomeNumber, AreaCodeOffice, OfficeNumber)
WHERE Telephones IS NULL;