在SQL Server中使用括号[()]和连字符( - )格式化多个电话号码

时间:2017-12-11 06:14:22

标签: sql-server

我在SQL中有一个结果集,其中包含一组逗号分隔的电话号码,之前我们只有一个电话号码,我可以格式化我需要的电话号码,即

(123)456-7890

现在这个公式不起作用,因为我的SQL列中有10个以上的数字,所以有什么方法可以在SQL中实现这个事务吗?这是我的SQL输出。 enter image description here

顺便说一句,我从此代码中获取此comma separated值。

SELECT
EmployeeID,
Type,
STUFF(
    (
    SELECT
        ', ' + PhoneNumber
    FROM EmpPhone E
    WHERE E.EmployeeID = T.EmployeeID AND E.Type = T.Type
    FOR XML PATH(''),TYPE
    ).value('.','VARCHAR(MAX)'
    ), 1, 1, ''
) AS Phones
INTO #PhoneNumbers
    FROM EmpPhone AS T
    GROUP BY EmployeeID, Type

所以我的问题是查询结果可以像

一样
(919)382-9999,(888)888-8888,(222)-2222 ......

1 个答案:

答案 0 :(得分:2)

试试这个,

SELECT
EmployeeID,
Type,
STUFF(
    (
    SELECT
        ', ' + '('+LEFT(PhoneNumber,3)+')'+RIGHT(LEFT(PhoneNumber,6),3)+'-'+RIGHT(PhoneNumber,4)
    FROM EmpPhone E
    WHERE E.EmployeeID = T.EmployeeID AND E.Type = T.Type
    FOR XML PATH(''),TYPE
    ).value('.','VARCHAR(MAX)'
    ), 1, 1, ''
) AS Phones
INTO #PhoneNumbers
    FROM EmpPhone AS T
    GROUP BY EmployeeID, Type

希望,这对你有帮助。