彼らが前に書いたように、データベースを再設計する方が良いでしょうが、この可能性がない場合は、この機能が役立つはずです
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;