我正在使用Microsoft SQL Server 2008
在SQL中,我有这种格式为3M/3M的数据。我想将此数据转换为$3M/$3M格式。同样在SQL中,我有这种格式的电话号码123456781。我想把这个数据转换成这个电话格式(123)-456-7891。
我如何转换它?我应该使用CAST函数还是CONVERT函数?
更正:
是的,我想在我的SELECT查询中以上述格式显示它们。3M/3M只是SQL中数据的一个示例。名为Money的列具有这种类型的数据,我想将其转换为$3M/$3M等...
电话号码也是一样。我有一个列名为PhoneNumber的列,其中包含格式为1234567891的数据,我想将其转换为(1234567891等)。有很多电话号码..。
发布于 2014-06-16 03:35:48
我相信您的意思是在您的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格式的结果
发布于 2014-06-16 03:47:00
您还可以设置电话号码格式,如下所示:
SELECT
SUBSTRING ('123456781', 0, 0) + '(' +
SUBSTRING ('123456781', 1, 3) + ')-' +
SUBSTRING('123456781', 4, 3) + '-' +
SUBSTRING('123456781', 7, 4)结果是:

希望这能有所帮助
发布于 2014-06-16 05:37:59
1)您可以在客户端或报表中轻松地格式化这些字符串。例如,Reporting Services有一个用于textbox的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
*/https://stackoverflow.com/questions/24233275
复制相似问题