gpt4 book ai didi

mysql - SQL求和函数(意外的SUM_SYM,期望END_OF_INPUT))

转载 作者:行者123 更新时间:2023-11-30 01:22:49 25 4
gpt4 key购买 nike

我正在尝试编写一个应如下所示的求和函数:

sum(case when (tblhistorique.REMARQUE LIKE "Added to operation cost%" OR tblhistorique.REMARQUE LIKE "Added to operational cost%")
then CAST(int, substring_index( LTRIM(substring_index(tblhistorique.REMARQUE, 'Qty:', -1)), '.', 1))
when (tblhistorique.REMARQUE LIKE "Removed from operation cost%" OR tblhistorique.REMARQUE LIKE "Removed from operational cost%")
then CAST(int, substring_index( LTRIM(substring_index(tblhistorique.REMARQUE, 'Qty:', -1)), ' ', 1))*(-1) else 0 end)

它的本质是进入一个表检查 REMARQUE 列中的语句类型,如果添加了它,我们想要添加数量,如果它被删除,那么我们想要减去数量。

为了从字符串中获取数量,需要进行一些字符串操作,这就是您在 substring_index 等中看到的。看起来效果不错。

我有两个问题,我可以对 SQL 中的数字字符串进行求和吗,因为我可以对它们进行算术运算,但我觉得很奇怪?我使用这个函数的方式有什么问题吗?

最佳答案

你可以在MySQL中进行“使用[字符串]进行算术”,因为MySQL会在算术上下文中自动将字符串转换为数字。例如,它将字符串 '123' 转换为数字 123。它还会将 '123abc' 转换为 123。它使用前导数字,因此 'abc123' 会转换为 0

这也适用于求和,因为那将是一个算术上下文。

也许你的表达有问题:

CAST(int,  . . .)

正确的语法是:

CAST(. . . as unsigned)

您可以使用以下方法执行相同的操作:

. . . + 0

关于mysql - SQL求和函数(意外的SUM_SYM,期望END_OF_INPUT)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18358446/

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