是否可以在已设置为nvarchar但仅包含数字的字段的SQL查询中使用SUM函数?
答案 0 :(得分:14)
这可以通过施放:
SELECT SUM(CAST(NVarcharCol as int))
但是,如果一个或多个记录不能CAST
到int
,则会抛出异常。
如果您的列只有数字值,我建议将数据类型更改为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';