update tablename set state=decode(state, 1, 0, 1) where moduleroleid = '1';
哪里出问题了?drop table test; create table test (state number, moduleroleid varchar2(20)); insert into test values (1, '1'); insert into test values (0, '1'); insert into test values (null, '1'); insert into test values (1, '2');select * from test; STATE MODULEROLEID ---------- ------------------------------ 1 1 0 1 1 1 2 update test set state=decode(state, 1, 0, 1) where moduleroleid = '1';select * from test; STATE MODULEROLEID ---------- ------------------------------ 0 1 1 1 1 1 1 2 -- state为1的变成0了,state不为1的都变成1了 -- 你要的不是这样么?
create table test (state number, moduleroleid varchar2(20));
insert into test values (1, '1');
insert into test values (0, '1');
insert into test values (null, '1');
insert into test values (1, '2');select * from test; STATE MODULEROLEID
---------- ------------------------------
1 1
0 1
1
1 2 update test set state=decode(state, 1, 0, 1) where moduleroleid = '1';select * from test; STATE MODULEROLEID
---------- ------------------------------
0 1
1 1
1 1
1 2 -- state为1的变成0了,state不为1的都变成1了
-- 你要的不是这样么?