POSTGRES-将参数值更改为相反

时间:2018-07-19 20:12:28

标签: sql postgresql

我有带有参数(varchar)的表,并且某些参数应该仅等于1或0。我想将此参数更改为相反,而又不知道旧值。 在Mysql中,我使用了把戏

UPDATE `parameters` SET `val`=(val^1) WHERE `name` = xxx

但是如何在postgres中做到这一点?

3 个答案:

答案 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