0

我需要用连字符分隔的成本列相加。我知道这通常是由 sum() 完成的,但在这种情况下,我需要去掉“-”,这样我就可以汇总整列。如下图所示。这是我的数据样例。并非每一行都有连字符。所以请指出如何在 mySQL 中实现它。

数据表。

在此处输入图像描述

根据图像。我预计 bk_rcost 末尾的值从 2012-10-09 20:29:44 到 2012-10-28 22:33:58 总计等于 203396(如果我总结正确的话)。

4

1 回答 1

0

正如他们之前写的那样,如果您重新设计数据库会更好,但是如果您没有这种可能性,此功能应该可以帮助您

delimiter //
DROP function IF EXISTS explode_sum//
create function explode_sum(source varchar(255))
returns integer
deterministic
begin
    declare p int;
    declare l int;
    declare r int;
    declare t int;
    set p = 1;
    set r = 0;
    repeat
        set l = locate('-', source, p);
        if l=0 then
            if p=1 then
                set r = r + source;
            else
                set r = r + substr(source, p, length(source)-p+1);
            end if;
        else
            set r = r + substr(source, p, l-p);
        end if;
        set p = l+1;
    until l=0
    end repeat;
    return(r);
end//
delimiter ;

您可以将其用作任何其他 mysql 函数,因为分隔符是硬编码的

select explode_sum(bk_rcost) from table;
于 2012-12-08T17:56:12.333 回答