我需要用连字符分隔的成本列相加。我知道这通常是由 sum() 完成的,但在这种情况下,我需要去掉“-”,这样我就可以汇总整列。如下图所示。这是我的数据样例。并非每一行都有连字符。所以请指出如何在 mySQL 中实现它。
数据表。
根据图像。我预计 bk_rcost 末尾的值从 2012-10-09 20:29:44 到 2012-10-28 22:33:58 总计等于 203396(如果我总结正确的话)。
我需要用连字符分隔的成本列相加。我知道这通常是由 sum() 完成的,但在这种情况下,我需要去掉“-”,这样我就可以汇总整列。如下图所示。这是我的数据样例。并非每一行都有连字符。所以请指出如何在 mySQL 中实现它。
数据表。
根据图像。我预计 bk_rcost 末尾的值从 2012-10-09 20:29:44 到 2012-10-28 22:33:58 总计等于 203396(如果我总结正确的话)。
正如他们之前写的那样,如果您重新设计数据库会更好,但是如果您没有这种可能性,此功能应该可以帮助您
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;