gpt4 book ai didi

sql-server - 将 varchar 转换为十进制在 SQL Server 上不起作用

转载 作者:行者123 更新时间:2023-12-01 00:33:05 24 4
gpt4 key购买 nike

首先,我正在研究 SQL Server 2012 Express 64 位。

我正在尝试将 varchar 字段转换为十进制并乘以另一个 varchar。

这是我试图在 SELECT 查询上运行的代码:

(CONVERT(decimal(12,2), COALESCE(Lineas.PARAM1, 0.00))) * (CONVERT(decimal(12,2), COALESCE(Lineas.PARAM2, 0.00)))  AS 'MULTIPARAM'

其中 PARAM1 和 PARAM2 是 varchar。
此字段上的数字是 1 和 2。如此简单。我希望它返回 3.00 但显示的错误是:

Mens. 8114, Nivel 16, Estado 5, Línea 1
Error al convertir el tipo de datos varchar a numeric.



我只想得到 PARAM1 * PARAM2 的结果,即使 PARAM1 或 PARAM2 为空(转换为 0)或者它们是十进制(用点分隔,例如:100.5)

我不明白为什么它不起作用...谢谢!

发现错误:

COALESCE(Lineas.PARAM1, 0.00) 使其“将 varchar 转换为数字”失败;和 COALESCE(Lineas.PARAM1, 0) 使它失败“将 varchar '100.5' 转换为 int”。 (无论如何这不是我的意图)

我怎么能让这个“工作”?

JATIN 的解决方案:

SELECT (COALESCE(CONVERT(decimal(12,2), NULLIF(REPLACE(Lineas.PARAM1,' ',''),'')), 0.00)) * (COALESCE(CONVERT(decimal(12,2), NULLIF) (REPLACE(Lineas.PARAM2,' ',''),'')), 0.00)) AS 'MULTIPARAM'

我所做的是首先替换所有空格,然后如果它是空字符串,则将其设置为 NULL,其余相同

最佳答案

尝试这个...

SELECT (COALESCE(CONVERT(decimal(12,2), Lineas.PARAM1), 0.00)) * (COALESCE(CONVERT(decimal(12,2), Lineas.PARAM2), 0.00))  AS 'MULTIPARAM'

问题在这里..
SELECT COALESCE('1', 0.00)

如果仍然出现错误“将数据类型 varchar 转换为数字时出错”,那么您的数据中包含除 0-9 以外的一些字符。

关于sql-server - 将 varchar 转换为十进制在 SQL Server 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37920412/

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