2017-08-11 36 views
-2

我給出了一個NVARCHAR格式的表。我無法改變這張桌子。但是,我需要獲得SUM值。 CASTCONVERT函數都不起作用。任何人都可以提供一些建議嗎?CAST或CONVERT函數不適用於NVARCHAR

SELECT SUM(CONVERT(INT, [Product])) 
FROM mytable 

SELECT SUM(CAST([Product] AS INT)) 
FROM mytable 

兩個結果:

消息245,級別16,狀態1,行300
轉換轉換爲nvarchar值 'WP 4.3 CU AB CDE WINDOW ABA5000RSW' 到數據類型時,失敗INT。

+2

你認爲結果應該是1添加到'WP 4.3-CU AB CDE窗口ABA5000RSW'?換句話說,你如何建議把它變成一個整數,所以你可以總結它? –

+0

'WP 4.3-CU AB CDE窗口ABA5000RSW'不是一個整數 –

+0

您能顯示樣本數據和期望的結果嗎?正如已經提到的那樣,'WP 4.3-CU AB CDE WINDOW ABA5000RSW' *不是'INT',並且永遠不會轉換,但是你的問題中的措辭讓我想知道你是否試圖獲得一個SUM )'正確的領域。 'Product'聽起來像產品名稱(這對SUM的意義是零)。你有沒有提到另一個領域? – Siyual

回答

0

嘗試檢查數字產品?

SELECT 
    SUM(CONVERT(INT, [Product])) 
FROM 
    mytable 
WHERE 
    ISNUMERIC([Product]) = 1; 
+1

壞主意......如果在列中有'1e4',...或'$'..或者其他一些數值會返回'TRUE'但不能轉換爲INT? – scsimon

3

'WP 4.3-CU AB CDE WINDOW ABA5000RSW'將永遠不會轉換爲int。

如果2012+,您可以使用try_convert(int,[Product])

這將返回NULL爲其失敗的轉換中的字符串。

相關問題