在concat字段SQL中格式化电话号码

时间:2015-01-16 13:49:47

标签: sql sql-server-2008-r2

我有一个独特的情况。我有一个连接的字段,我称之为地址,作为该地址的一部分,我在最后一行有该地址的电话号码。目前,电话号码的格式如下:

8885551212

我希望它的格式如下:

(888) 555-1212

下面是我对临时表的INSERT,我为了让一切正确而做。有关如何使电话部分正常工作的任何指导都是一个很好的帮助。我确实找到了一篇关于使用函数的文章,但我不确定如何根据我的情况正确编写它。谢谢。

INSERT into #Referral_Temp (status, physician, timeFrame, date, address)
    select o.actStatus, o.actTextDisplay, apptTimeframe, apptDate,
    (select (p.address_line_1 + CHAR(13)+CHAR(10) + p.address_line_2 + CHAR(13)+CHAR(10)
             + p.city + ', ' + p.state + ' ' + p.zip + CHAR(13)+CHAR(10) + p.phone) 
             AS address)
    from order_ o
    join provider_mstr p on o.refer_to_prov_id = p.provider_id
    where o.encounterID = @enc_id

3 个答案:

答案 0 :(得分:1)

使用 Stuff 字符串函数将所需的特殊字符串插入字符串中。试试这个。

SELECT '('+ Stuff(Stuff('8885551212', 4, 0, ') '), 9, 0, '-') 

答案 1 :(得分:1)

您可以使用SUBSTRING功能:

更改

+ p.phone

+ '(' + SUBSTRING(p.phone,1,3) + ') ' 
+ SUBSTRING(p.phone,4,3) + '-' 
+ SUBSTRING(p.phone,7,4)

答案 2 :(得分:0)

试试这个

SELECT '(' + SUBSTRING('8885551212',1,3) + ') ' + SUBSTRING('8885551212',4,3) + '-' + SUBSTRING('8885551212',7,4)

输出将是: - (888)555-1212