在已设置为nvarchar但仅包含数字的字段的SQL查询中,是否可以使用SUM函数?在nvarchar字段上使用SUM
3
A
回答
12
这可以通过铸造:
SELECT SUM(CAST(NVarcharCol as int))
然而,这将抛出一个例外是1个或更多的记录不能CAST
到int
。
如果您的列只有数值,我建议将数据类型更改为int以保存未来的问题。
如果您不能更改数据类型,那么下面WHERE
条款将阻止抛出的异常:
WHERE ISNUMERIC([NVarcharCol])=1
3
select sum (cast (myFiled as int)) from myTable
1
你必须将varchar转换为数字型使用SUM之前它会导致错误:
Msg 8117,Level 16,State 1,Line 6 对于sum运算符,操作数数据类型varchar无效。
如果它只包含数字数据 - 那么在varchar中存储数据的意义何在?
+1
这是一个历史数据库,我已经选择并需要运行查询,数据类型是在几年前建立的。 – 2012-01-09 12:29:53
1
你需要铸造,试试这个
SUM(COALESCE(CoumnName, 0))
0
使用SUM(COALESCE(CoumnName,0)) 我建议,你应该改变的数据类型number.Its好的做法。
0
如果你想添加两个nvarchar列。 列TestTotal(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';
相关问题
- 1. 在存在的字段上使用$ sum将返回值0
- 2. MySQL SUM如果字段b =字段a
- 3. SQL SUM()函数字段
- 4. 按Sum字段排序
- 5. Mongoose SUM + $ cond +数组字段
- 6. Cakephp SUM相关字段
- 7. 如何使用Mybatis将Oracle字段(nvarchar,nclob)更新到中文
- 8. 上FLOAT数据使用SUM
- 9. Linq2Sql没有更新NVarchar(Max)字段?
- 10. T-SQL - nvarchar的文本字段
- 11. 如何在CoreData上使用@sum
- 12. 如何在打字稿上使用linq js sum和average?
- 13. 在nvarchar(max)字段中插入MSSQL超过8000个字符
- 14. SQL:是否可以使用INTERVAL类型的SUM()字段?
- 15. 使用yii2中的sum()和相关字段的组合
- 16. 添加使用SUM(列字段)时的数据值 - MySQL
- 17. Telerik RadGrid - >如何SUM(nvarchar)页脚在页脚?
- 18. MS SQL Server sum字段的总和
- 19. 按Tableau中Sum字段排序
- 20. Rails 3 Sum两个字段的产品
- 21. 无法在nvarchar上调用方法
- 22. 在字段上使用变量
- 23. 在Gedmo \ Blameable字段上使用UniqueEntity
- 24. R - 在多个字段上使用padr
- 25. 将字段从nchar转换为nvarchar字段,但仍然在更新上添加空格
- 26. WooCommerce结帐字段:在帖子元字段值上使用str_replace
- 27. MYSQL - 使用SUM
- 28. 使用SUM
- 29. SQL Server nvarchar用于varchar字段的N前缀
- 30. SQL Server 2008:在nvarchar字段中存储日期
更改列类型是正确的类型,你不会有这样的问题。 – Oded 2012-01-09 12:10:12
有时(例如,如果您正在使用第三方架构),这种更改并非总是可行。 – 2012-01-09 12:15:10
@Oded - 我希望我可以downvote您的评论。你正在假设关于OP的很多事情。他可能无法控制数据库。可能有其他推理,为什么列是nvarchar(就像读取数据库的某些API只能读取文本列或类似的东西)。看不起提问者的无益评论不是SO精神。 – data 2014-06-17 09:27:26