将数据类型nvarchar转换为数字时出错-SQL Server

帕特·多伊尔

我试图在数据库中平均取一列。该列AMOUNT并存储为NVARCHAR(300),null

当我尝试将其转换为数值时,出现以下错误:

消息8114,级别16,状态5,第1
行将数据类型NVARCHAR转换为NUMBER时出错

这就是我现在所拥有的。

SELECT AVG(CAST(Reimbursement AS DECIMAL(18,2)) AS Amount
FROM Database
WHERE ISNUMERIC(Reimbursement) = 1 
  AND Reimbursement IS NOT NULL
戈登·利诺夫(Gordon Linoff)

您会认为您的代码可以工作。但是,SQL Server不保证该WHERE子句在进行转换之前会过滤数据库SELECT我认为这是一个错误。在Microsoft看来,这是一项优化功能。

因此,WHERE不能保证您的工作。即使使用CTE也无法解决问题。

TRY_CONVERT()SQL Server 2012+中提供了最佳解决方案

SELECT AVG(TRY_CONVERT(DECIMAL(18,2), Reimbursement)) AS Amount
FROM Database
WHERE ISNUMERIC(Reimbursement) = 1 AND Reimbursement IS NOT NULL;

在早期版本中,您可以使用CASECASE 保证条款的顺序排序,那么:

SELECT AVG(CASE WHEN ISNUMERIC(Reimbursement) = 1 AND Reimbursement IS NOT NULL
                THEN CONVERT(DECIMAL(18,2), Reimbursement))
           END)
FROM Database;

因为AVG()忽略NULL值,所以WHERE没有必要,但是您可以根据需要将其包括在内。

最后,您可以使用计算列来简化代码:

alter database add Reimbursement_Value as
    (CASE WHEN ISNUMERIC(Reimbursement) = 1 AND Reimbursement IS NOT NULL
          THEN CONVERT(DECIMAL(18,2), Reimbursement))
     END);

然后,您可以将代码编写为:

select avg(Reimbursement_Value)
from database
where Reimbursement_Value is not null;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据类型nvarchar转换为日期时间SQL SERVER 2005时出错

来自分类Dev

SQL Server:将数据类型 varchar 转换为数字时出错(奇怪的行为)

来自分类Dev

SQL Server转换错误:将nvarchar值“ XXX”转换为数据类型int时转换失败

来自分类Dev

SQL Server转换错误:将nvarchar值“ XXX”转换为数据类型int时转换失败

来自分类Dev

SQL Server存储过程-将数据类型varchar转换为datetime时出错

来自分类Dev

SQL Server从查询“将数据类型varchar转换为bigint时出错”

来自分类Dev

SQL Server:将数据类型varchar转换为数值时出错

来自分类Dev

将数据类型 varchar 转换为真正的 SQL Server 时出错

来自分类Dev

将Nvarchar(MAX)转换为DATETIME数据类型SQL Server查询

来自分类Dev

使用动态T-SQL将数据类型nvarchar转换为float时出错

来自分类Dev

对于OPENXML sql,将空XML节点的数据类型nvarchar转换为数值时出错

来自分类Dev

INSERT Query SQL(将数据类型nvarchar转换为(null)时出错)

来自分类Dev

SQL Server:将表达式转换为数据类型bigint的算术溢出错误

来自分类Dev

将varchar值转换为SQL Server 2008中的数据类型int时,转换失败

来自分类Dev

将数据类型varchar转换为数字时出错。sql t-sql

来自分类Dev

将数据类型varchar转换为数字时出错。SQL服务器

来自分类Dev

SQL Server错误将数据类型nvarchar转换为日期python

来自分类Dev

SQL查询将nvarchar转换为数据类型int在存储过程中出错

来自分类Dev

将varchar值'1,3'转换为SQL Server中的数据类型int时转换失败

来自分类Dev

将nvarchar转换为SQL Server中的浮点数时出错

来自分类Dev

SQL Server算术溢出错误将表达式转换为数据类型datetime

来自分类Dev

在SQL Server中将varchar值转换为数据类型int时转换失败

来自分类Dev

SQL Server:将 nvarchar 类型转换为 INT

来自分类Dev

SQL Server错误:将char数据类型转换为smalldatetime数据类型导致超出范围的smalldatetime值

来自分类Dev

SQL Server转换为真实数据类型

来自分类Dev

更新 SQL Server 时如何将数据 nvarchar 转换为浮点数

来自分类Dev

将CAST / CONVERT数据类型转换为INT SQL Server查询

来自分类Dev

SQL Server-将char数据类型转换为smalldatetime

来自分类Dev

将日期数据类型从SQL Server转换为C#中的ToShortDateString

Related 相关文章

  1. 1

    将数据类型nvarchar转换为日期时间SQL SERVER 2005时出错

  2. 2

    SQL Server:将数据类型 varchar 转换为数字时出错(奇怪的行为)

  3. 3

    SQL Server转换错误:将nvarchar值“ XXX”转换为数据类型int时转换失败

  4. 4

    SQL Server转换错误:将nvarchar值“ XXX”转换为数据类型int时转换失败

  5. 5

    SQL Server存储过程-将数据类型varchar转换为datetime时出错

  6. 6

    SQL Server从查询“将数据类型varchar转换为bigint时出错”

  7. 7

    SQL Server:将数据类型varchar转换为数值时出错

  8. 8

    将数据类型 varchar 转换为真正的 SQL Server 时出错

  9. 9

    将Nvarchar(MAX)转换为DATETIME数据类型SQL Server查询

  10. 10

    使用动态T-SQL将数据类型nvarchar转换为float时出错

  11. 11

    对于OPENXML sql,将空XML节点的数据类型nvarchar转换为数值时出错

  12. 12

    INSERT Query SQL(将数据类型nvarchar转换为(null)时出错)

  13. 13

    SQL Server:将表达式转换为数据类型bigint的算术溢出错误

  14. 14

    将varchar值转换为SQL Server 2008中的数据类型int时,转换失败

  15. 15

    将数据类型varchar转换为数字时出错。sql t-sql

  16. 16

    将数据类型varchar转换为数字时出错。SQL服务器

  17. 17

    SQL Server错误将数据类型nvarchar转换为日期python

  18. 18

    SQL查询将nvarchar转换为数据类型int在存储过程中出错

  19. 19

    将varchar值'1,3'转换为SQL Server中的数据类型int时转换失败

  20. 20

    将nvarchar转换为SQL Server中的浮点数时出错

  21. 21

    SQL Server算术溢出错误将表达式转换为数据类型datetime

  22. 22

    在SQL Server中将varchar值转换为数据类型int时转换失败

  23. 23

    SQL Server:将 nvarchar 类型转换为 INT

  24. 24

    SQL Server错误:将char数据类型转换为smalldatetime数据类型导致超出范围的smalldatetime值

  25. 25

    SQL Server转换为真实数据类型

  26. 26

    更新 SQL Server 时如何将数据 nvarchar 转换为浮点数

  27. 27

    将CAST / CONVERT数据类型转换为INT SQL Server查询

  28. 28

    SQL Server-将char数据类型转换为smalldatetime

  29. 29

    将日期数据类型从SQL Server转换为C#中的ToShortDateString

热门标签

归档