2017-04-05 150 views
1

我有第三方數據源,其中包含僅包含數字的varchar(255)列。此欄是一個項目的成本。我希望能夠將該列乘以因子(2.3)以獲得默認銷售價格,但我無法對varchar列應用算術運算符,並且當與算術運算符結合使用時,CAST函數會產生錯誤。在varchar字段上使用SQL Server算術運算符

此語句產生以下示例的結果:

SELECT 
    AverageCost 
FROM 
    dbo.inventory 
  • 32.5
  • 55.25
  • 8.42
  • 3.33333

這satatement:

SELECT 
    AverageCost * 2.3 AS Price 
FROM 
    dbo.iteminventory 

生成此錯誤

算術溢出錯誤轉換數據類型數值

編寫聲明如下投作爲小數不產生錯誤,但將算術運算符添加到此語句中已經避開了我,我的企圖哈哈都導致了錯誤。

SELECT 
    CAST(AverageCost AS Decimal(10, 2)) AS Price 
FROM 
    dbo.inventory 

在此先感謝您的幫助。

回答

1

如果2012+使用Try_Convert()

Try_Convert()將捕獲任何轉換錯誤爲NULL

SELECT try_convert(float,AverageCost) * 2.3 AS Price 
FROM dbo.inventory 

返回

Price 
388.7 
74.75 
127.075 
19.366 
678.5 
0 
7.666659 

要查看其值可能導致轉換錯誤

Select * 
From iteminventory 
Where try_convert(float,AverageCost) is null 
+0

謝謝約翰,那工作完美。 –

+0

@ B.L。樂於幫助 –