转换为特定格式。 $ sign和电话号码

时间:2014-06-15 19:26:31

标签: sql sql-server-2008

我正在使用Microsoft SQL Server 2008

在SQL中,我有3M / 3M格式的数据。我想将此数据转换为此格式$ 3M / $ 3M。 另外在SQL中我有这种格式的电话号码123456781.我想将此数据转换为这种电话格式(123)-456-7891。

我该如何转换它? 我应该使用CAST还是CONVERT功能?

CORRECTION:

是的,我将在SELECT查询中以所述格式显示它们。 3M / 3M只是SQL中数据的一个例子。列名Money有这种类型的数据,我想将其转换为$ 3M / $ 3M等...

与电话号码相同。我有列名PhoneNumber,它包含1234567891格式的数据,我想把它转换为(123)-456-7891等...有很多电话号码...

3 个答案:

答案 0 :(得分:0)

我相信您打算在SELECT查询中以所述格式显示它们。然后,您可以使用LEFT() or RIGHT()函数执行以下操作,并连接$字符。

select '$' + left('3M/3M',2) + '/$' + right('3M/3M',2);

$3M/$3M

中的结果

电话号码

select '('+ left('123456781',3) + ')-'+
right(left('123456781',6),3)+'-'+right('123456781',3)

(123)-456-781

中的结果

答案 1 :(得分:0)

您也可以将电话号码格式化如下:

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

结果:

enter image description here

希望这有帮助

答案 2 :(得分:0)

1)您可以在客户端或报表中轻松格式化这些字符串。例如,Reporting Services的文本框为Format property,并且还有Format function

2)只有在没有任何选项(参见#1)的情况下,才可以在SQL Server中格式化字符串:

SELECT '(' + STUFF(STUFF('1234567891', 7, 0, '-'), 4, 0, ')-') AS Val1

SELECT '$' + REPLACE('3M/3M', '/', '/$') AS Val2

/*
Val1
--------------
(123)-456-7891

Val2
--------------
$3M/$3M
*/

SELECT FORMAT(1234567891, '(###)-###-####') AS Val3 -- SQL Server 2012+
/*
Val3
--------------
(123)-456-7891
*/