当尝试将列数据类型NAVCHAR转换为INT时收到错误。下面的简单代码:
SELECT [phone], FORMAT(CAST(PHONE AS int),'(000)-000-0000)')
FROM Sales.Customers
答案 0 :(得分:3)
您的查询应该是这样的:
SELECT [phone], FORMAT(CAST(REPLACE([phone],'-','')AS INT), '(000)-000-0000)')
FROM Sales.Customers
因此,如果要在其中转换一个无效字符(对于这种情况,破折号是要替换的字符),它将用空白替换它,然后将其格式化为所需的格式。
例如:“ 030-3456789” 这将变成(030)-345-6789
答案 1 :(得分:0)
好像您的行中存储的电话号码存储为字符串,无法转换为整数。要找出哪个,执行:
SELECT *
FROM Sales.Customers
WHERE ISNUMERIC(phone) = 0;
HTH
答案 2 :(得分:0)
我建议使用TRY_CAST()
:
SELECT [phone],
FORMAT(TRY_CAST(PHONE AS int), '(000)-000-0000)')
FROM Sales.Customers;
如果无法转换该值,则返回NULL
,这比得到错误要好。