我在SQL Server 2008表格中有两列数据需要从varchar(50)
转换为decimal
。根据我尝试使用的方法获取不同的错误。
将数据类型varchar
转换为numeric
时出错。
算术溢出
我尝试过的一些方法:
CONVERT(DECIMAL(38,10),REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(value)),',',''),' ',''),'-',''))
CASE
WHEN value = 1
THEN CONVERT(numeric(14,2), value)
ELSE 'NA'
END
以下是我要转换的表格中的数据示例:
271.5
14.95
352.5
150
37.5
20.5
300
90
这应该不是这么难......
答案 0 :(得分:1)
CAST
就可以正常工作。
如果您不确定所有值都是数字,您可以在转换之前清除它们;
SELECT value, CASE WHEN ISNUMERIC(value)=1
THEN CAST(value AS NUMERIC(10,2))
END value2
FROM table1
如果字符串value
实际上是可转换的,则会将其转换为NUMERIC
,否则会给出值NULL
。