尝试将列数据类型NVARCHAR转换为INT时遇到错误

时间:2019-03-03 01:18:28

标签: sql

当尝试将列数据类型NAVCHAR转换为INT时收到错误。下面的简单代码:

SELECT [phone], FORMAT(CAST(PHONE AS int),'(000)-000-0000)')
FROM Sales.Customers

3 个答案:

答案 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,这比得到错误要好。