我有带有参数(varchar)的表,并且某些参数应该仅等于1或0。我想将此参数更改为相反,而又不知道旧值。 在Mysql中,我使用了把戏
UPDATE `parameters` SET `val`=(val^1) WHERE `name` = xxx
但是如何在postgres中做到这一点?
答案 0 :(得分:2)
如果参数是数字,请使用-
:
update parameters
set val = 1 - val
where name = xxx;
如果参数是字符串,请使用case
逻辑:
update parameters
set val = (case when val = '0' then '1' else '0' end)
where name = xxx;
即使存在(由于某种原因)现有值不同,这也可以确保结果为0/1。
答案 1 :(得分:1)
如果参数是整数减去1,然后应用绝对函数 即
更新参数设置val = abs(val-1),其中名称= xxx
任何1都将变成= 0,任何0都将变成= 1
答案 2 :(得分:1)
解决方案是:
UPDATE parameters SET val = 1 - NULLIF(val, '')::int WHERE