我需要将一列成本与连字符分开。我知道它通常是由sum()完成的,但在这种情况下我需要摆脱“ - ”所以我可以总计整个列。如下图所示。这是我的数据样本的样本。并非每一行都有连字符。所以请指出如何在mySQL中实现它。
数据表。
根据图像。我预计bk_rcost结束时的值总计从2012-10-09 20:29:44到2012-10-28 22:33:58等于203396(如果我总结一下)。
答案 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;