gpt4 book ai didi

sql - CAST(somenumber as VARCHAR(10)) + somestring 返回错误将数据类型 varchar 转换为数字

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

我正在尝试将最低和最高工资与连字符结合起来显示在报告中。我觉得我已经这样做了一百次,但我仍然无法弄清楚为什么我会收到“将数据类型 varchar 转换为数字时出错”的消息,尤其是因为我试图将数字转换为 varchar 而不是其他方式大约。

amt_exp_formatted = CASE
WHEN a.class_code IN ('9997','9998','9999') THEN 0
--ELSE CAST(e.min_sal as VARCHAR(10)) + '-' + CAST(e.max_sal as VARCHAR(10))
ELSE CONVERT(VARCHAR(1), 1) + CONVERT(VARCHAR(1), 'a')
END
在上面的示例中,如果我使用“a”,则会出现错误。如果我将 'a' 更改为 '9' 那么它会起作用并且它将 9 附加到 1(即 19)而不是将它们加在一起,这正是我想要的,但带有一个字符串。我试过 CAST 和 CONVERT 都没有运气。我知道我不应该在字母 'a' 上需要第二个 CONVERT,但我只是想强制数据类型相同以防万一。我毫不怀疑我错过了一些简单的东西,但我似乎无法理解,所以我认为询问社区不会有什么坏处。
谢谢!

最佳答案

一个 case表达式返回一个具有确定类型的值。如果任何返回的叉返回一个数字,那么它就是数字。并且字符串被转换。
因此,请确保在所有情况下都返回一个字符串:

(CASE WHEN a.class_code IN ('9997', '9998', '9999')
THEN '0'
ELSE CONCAT(e.min_sal, '-', e.max_sal)
END)
CONCAT()自动将参数转换为字符串。

关于sql - CAST(somenumber as VARCHAR(10)) + somestring 返回错误将数据类型 varchar 转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64450582/

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