簡體   English   中英

SQL Server 2008-存儲為Varchar(50)的Int和Decimal值的混合無法轉換為Decimal

[英]SQL Server 2008 - Mix of Int and Decimal Values stored as Varchar(50) Can't Convert To Decimal

我在SQL Server 2008表中有兩列數據,我需要將它們從varchar(50)轉換為decimal 根據我嘗試使用的方法,會得到不同的錯誤。

  1. 將數據類型varchar轉換為numeric出錯。

  2. 算術溢出

我嘗試過的一些方法:

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

要使用進行測試的SQLfiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM