尝试将列数据类型NAVCHAR转换为INT接收错误时。下面是简单的代码:
SELECT [phone], FORMAT(CAST(PHONE AS int),'(000)-000-0000)')
FROM Sales.Customers发布于 2019-03-03 10:00:39
您的查询应该是这样的:
SELECT [phone], FORMAT(CAST(REPLACE([phone],'-','')AS INT), '(000)-000-0000)')
FROM Sales.Customers因此,如果有无效的字符需要在中转换(在这种情况下,破折号是要替换的字符),它会将其替换为空白,然后将其格式化为您想要的格式。
例如:'030-3456789‘这将变成(030)-345-6789
发布于 2019-03-03 09:26:52
看起来您有一些行,其中的电话号码存储为字符串,不能转换为int。要找出是哪一个,执行以下命令:
SELECT *
FROM Sales.Customers
WHERE ISNUMERIC(phone) = 0;HTH
发布于 2019-03-03 11:17:22
我建议使用TRY_CAST()
SELECT [phone],
FORMAT(TRY_CAST(PHONE AS int), '(000)-000-0000)')
FROM Sales.Customers;如果值不能转换,则返回NULL --这总比得到一个错误要好。
https://stackoverflow.com/questions/54964700
复制相似问题