我正在尝试编写一个看起来像这样的 sum 函数:
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 列中的语句类型,如果添加了它,我们想要添加数量,如果它被移除,那么我们想要减去数量。
要从字符串中取出 QTY,需要进行一点字符串操作,这就是您在 substring_index 中看到的所有内容。这似乎工作正常。
我有 2 个问题,我可以对 SQL 中的数字字符串求和吗,因为我可以对它们进行算术运算,但我觉得这很奇怪?我使用此功能的方式有什么问题?