我正在使用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等...有很多电话号码...
答案 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)
结果:
希望这有帮助
答案 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
*/