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 に答える