Tom*_*cky 1 oracle varchar triggers numbers
我有一张包含许多记录的表格,并且还在继续增长:
table T_A
{
total varchar2(10),
total number
}
Run Code Online (Sandbox Code Playgroud)
"总"字段由5个数字和1个字符组成,例如"12345p",该字符是"p"或"N".
现在,我想写一个触发器将现有的"total"转换为数字并将它们存储在"total_num"中.此外,如果有插入或更新操作,它可以自动完成此转换,并且必须满足以下条件:
如果字符是"p",则数字为正,例如"12345p"转换为"12345",否则数字为负数.例如,"12345N"转换为"-12345".
如何写这个触发器?
试试这个
(未测试,因为我此刻没有oracle连接)
CREATE OR REPLACE TRIGGER trg_ta_totals
BEFORE INSERT OR UPDATE ON T_A
FOR EACH ROW
DECLARE
vnum number;
BEGIN
IF instr(:NEW.total,'p') > 0 THEN
vnum:=TO_NUMBER(SUBSTR(:NEW.total,0,LENGTH(:NEW.total)-1));
ELSIF instr(:NEW.total,'N') > 0 THEN
vnum:=TO_NUMBER(SUBSTR(:NEW.total,0,LENGTH(:NEW.total)-1))*-1;
END IF;
:NEW.total_num := vnum;
END;
Run Code Online (Sandbox Code Playgroud)