2017-08-11 37 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为其失败的转换中的字符串。

相关问题