Sql 将源列值合并到一个目标列中
我有一个源表,其中包含列AreaCodeMobile+MobilePhoneNumber、AreaCodeHome+HomeNumber、AreaCodeOffice+OfficeNumber,我想将它们合并到目标表中的一个电话列中。如何实现这一点?这些列的数据类型是什么?另外,您希望保存在目标列中的格式是什么?如果它们都是int数据类型,则需要使用CAST转换为varchar。例如Sql 将源列值合并到一个目标列中,sql,sql-server,Sql,Sql Server,我有一个源表,其中包含列AreaCodeMobile+MobilePhoneNumber、AreaCodeHome+HomeNumber、AreaCodeOffice+OfficeNumber,我想将它们合并到目标表中的一个电话列中。如何实现这一点?这些列的数据类型是什么?另外,您希望保存在目标列中的格式是什么?如果它们都是int数据类型,则需要使用CAST转换为varchar。例如 DECLARE @AreaCodeMobile int = 833, @MobilePhoneNumber IN
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))
)
只需使用CONCAT
并使用+
作为逗号前缀,或任何您喜欢的分隔符
SELECT t.*,
CONCAT(AreaCodeMobile,
', '+MobilePhoneNumber,
', '+AreaCodeHome,
', '+HomeNumber,
', '+AreaCodeOffice,
', '+OfficeNumber) AS [Telephones]
FROM YourTable t;
这里的诀窍是CONCAT将忽略NULL。但是如果添加NULL,则
+
将导致NULL。因此,不会为空值添加无用的逗号 或者,如果您的Sql Server版本支持,也可以使用
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;
请提供示例数据和所需结果。@GordonLinoff例如,我有AreaCodeMobeile=833和MobilePhoneNumber=7571256,我有areacodehome=877和homenumber=2968997,我有一个areacodeoffice=247和officenumber=8658734,我想将它们合并到一个名为Telephonenumber的目的地列中,这样最终结果应该包含完整的电话号码和区号。