2011-12-02 149 views
0

我需要SQL轉換語句的幫助。我有NetQuanity(masterTable)這是一個varchar(15),我有另一個表是購買價格(PO TABLE),這是錢。當我嘗試將它們相乘的SQL視圖中給我的錯誤:SQL轉換語句

enter image description here

+1

NetQuanity(masterTable)它是一個varchar(15) - 爲什麼?是否需要將一般數字值存儲爲字符串? –

+3

你的varchar(15)列有什麼樣的數據? ''xyz''?數據是否可以轉換爲數字類型? –

+0

真正的解決辦法是修復你的結構。您希望數學計算的數值數據永遠不會儲存在varcharchar字段中。 YOu不希望每次需要按照預期使用數據時進行昂貴的轉換。有時需要refac數據庫,這是其中之一。 – HLGEM

回答

4

如果你的領域是VARCHAR,你需要投射到操作之前的適當的數據類型。例如然而

CAST(myVarCharField as INT) * myIntField 

事先警告,如果你嘗試這個字段轉換爲數字數據類型,它不是數字,你就可以在同一條船上。

我會建議你使用例如在CASTCONVERT,對該SO杆限定,原因如下:

相關:T-SQL Cast versus Convert

2

也許嘗試使用CONVERT功能? CONVERT(money,NetQuantity)

+0

此外,請確保您的'varcharcolumn'沒有無效的字符,將打破轉換。在這種情況下,你會得到類似'不能將一個char值轉換爲金錢。該char值具有不正確的語法。「# – omarello

+2

好點。如果它確實 - 受苦! :) –

+0

+ 1因爲我說:) – omarello

0

首先你有一個數據定義問題。 首先要消除主表中的任何非數字條目。

SELECT whatever FROM masterTable WHERE ISNUMERIC(NetQuanity)=1 

下一步是包含此作爲計算的子查詢。
在此查詢中,使用CONVERT或CAST將有效量轉換爲整數。 即

CONVERT(INT, NetQuantity)