首页 > 解决方案 > SQL 错误:将 varchar 值“,”转换为数据类型 int 时转换失败

问题描述

我正在为这个而头晕目眩。我不断收到错误。我遵循了其他问题的决议,但对我没有任何帮助。我真的希望有人可以在这里纠正我。

我想要的只是从视图中获取数据

SELECT Table_view.Information
FROM Table_View

但我不断收到此错误

将 varchar 值“,”转换为数据类型 int 时转换失败

我尝试了以下方法:

SELECT Table_View.Information
FROM Table_View
WHERE Table_View.Information NOT LIKE '%,%'

SELECT Table_View.Information
CASE WHEN CAST(Table_View.Information AS INT) = 1 THEN 'space' 
ELSE CONVERT(VARCHAR, Table_View.Information) END
FROM Table_View

SELECT CAST (REPLACE(REPLACE(Table_View.Information, ' ,', ' '),'/', '') AS VARCHAR)
FROM Table_View

SELECT CONVERT(VARCHAR, REPLACE(REPLACE(Table_View.Information, ' ,', ' '),'/', ''))
FROM Table_View

SELECT Table_View.Information
CASE 
WHEN Table_View.Information NOT LIKE '%,%' THEN CAST(Table_View.Information AS VARCHAR)
END 

FROM Table_View 

以上都不能帮助我解决问题。有什么建议么?我试过演员,转换,案例,替换..

标签: sql-servertsql

解决方案


显然你应该使用try_convert()or try_cast()if 2012+。如果转换失败,将返回 NULL,而不是抛出错误。

也就是说, convert(money,...) 往往更宽容一点

例子

Declare @Table table (SomeCol varchar(50))  
Insert Into @Table values 
 ('$25.25')
,('-  252,525.25')

Select AsMoney = convert(money,SomeCol)  -- int would fail
 From  @Table

退货

AsMoney
25.25
-252525.25

推荐阅读