gpt4 book ai didi

tsql - 将 varchar(max) 转换为十进制时,将数据类型 varchar 转换为数字时出错

转载 作者:行者123 更新时间:2023-12-04 04:59:07 24 4
gpt4 key购买 nike

我正在尝试对两个字符串的值求和。为了做到这一点,我将字符串转换为小数,将它们相加,然后将其转换回字符串以进行输出。还使用 max 来避免重复条目。
我的 SP 中有以下行:
Cast( Max(CASE WHEN QuestionID = 261 THEN CAST(Answer AS decimal) ELSE '' END) + Max(CASE WHEN QuestionID = 260 THEN CAST(Answer AS decimal) ELSE '' END) AS varchar) as Total
答案字段为 varchar(max),默认值为 ''。
问题是我收到错误消息:将数据类型 varchar 转换为数字时出错

最佳答案

失败的部分是内部情况:

CASE WHEN QuestionID = 261
THEN CAST(Answer AS decimal)
ELSE '' END

A CASE表达式(例如上面)必须只返回一种数据类型。在这种情况下,它不能同时返回小数和 varchar(空字符串 '')。由于 type precedence任一分支的结果都转换为小数。如 任何 行有 QuestionID != 261 ,它会尝试转换 ''转换为十进制,和 bam - 你的错误。

你需要这个:
Cast( Max(CASE WHEN QuestionID IN (261,260) AND ISNUMERIC(ANSWER) = 1
THEN CAST(Answer AS decimal)
ELSE 0 END)
AS varchar) as Total

关于tsql - 将 varchar(max) 转换为十进制时,将数据类型 varchar 转换为数字时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16356215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com