在nvarchar字段上使用SUM

时间:2012-01-09 12:08:24

标签: sql

是否可以在已设置为nvarchar但仅包含数字的字段的SQL查询中使用SUM函数?

6 个答案:

答案 0 :(得分:14)

这可以通过施放:

SELECT SUM(CAST(NVarcharCol as int))

但是,如果一个或多个记录不能CASTint,则会抛出异常。

如果您的列只有数字值,我建议将数据类型更改为int以保存将来的问题。

如果您无法更改数据类型,则以下WHERE子句将阻止抛出异常:

WHERE ISNUMERIC([NVarcharCol])=1

答案 1 :(得分:3)

select sum (cast (myFiled as int)) from myTable

答案 2 :(得分:2)

你需要施法,试试这个

SUM(COALESCE(CoumnName, 0))

答案 3 :(得分:1)

在使用SUM之前,你必须将varchar转换为数字类型,而不是你会有错误:

Msg 8117,Level 16,State 1,Line 6 操作数数据类型varchar对sum运算符无效。

如果它只包含数字数据 - 那么将数据存储在varchar中是什么意思?

答案 4 :(得分:0)

使用SUM(COALESCE(CoumnName,0)) 我建议,您应该将数据类型更改为数字。这是一种很好的做法。

答案 5 :(得分:0)

如果要添加两个nvarchar列。 列TestFotal(nvarchar),列TestFailed(nvarchar),列TestPassed(nvarchar)

UPDATE [your_db].[dbo].[your_table] 
SET your_table.TestTotal = Convert(nvarchar, cast (your_table.TestFailed as int) + cast (your_table.TestPassed as int))
WHERE TestTotal='your_condition';