MySQL Sum列,用连字符分隔值

时间:2012-12-08 14:34:43

标签: mysql sum calculated-columns hyphen

我需要将一列成本与连字符分开。我知道它通常是由sum()完成的,但在这种情况下我需要摆脱“ - ”所以我可以总计整个列。如下图所示。这是我的数据样本的样本。并非每一行都有连字符。所以请指出如何在mySQL中实现它。

数据表。

enter image description here

根据图像。我预计bk_rcost结束时的值总计从2012-10-09 20:29:44到2012-10-28 22:33:58等于203396(如果我总结一下)。

1 个答案:

答案 0 :(得分: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;