[英]SQL Server 2008 - Mix of Int and Decimal Values stored as Varchar(50) Can't Convert To Decimal
我在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
這不應該那么難...
只要數據干凈且范圍足夠, CAST
可以正常工作。
如果不確定所有值是否都是數字,則可以在轉換之前將其擦洗;
SELECT value, CASE WHEN ISNUMERIC(value)=1
THEN CAST(value AS NUMERIC(10,2))
END value2
FROM table1
如果該字符串value
實際上是可轉換的,則它將轉換為NUMERIC
,否則將其賦值為NULL
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.