update table_name set flag =decode(substr(to_char(金额),1,1),'-','1','0'), Balance =decode(substr(to_char(金额),1,1),'-',to_number(substr(to_char(金额),2,length(to_char(金额) - 1 )))),金额) where cardno = 卡号
update t set balance=decode(sign(amt),1,amt,0-amt),flag=decode(sign(amt),1,0,1);
结构如下
CardNo varchar2(20) 卡号
Balance NUMBER(19,2) 余额(始终>=0)
FLAG NUMBER(1) 余额符号(0正 1负)输入条件为 金额,卡号 amt,cardnum(amt可能为正也可能为负),一句sql更新余额
Balance =decode(substr(to_char(金额),1,1),'-',to_number(substr(to_char(金额),2,length(to_char(金额) - 1 )))),金额)
where cardno = 卡号