PostgreSQL で XOR 関数をシミュレートするにはどうすればよいですか? または、少なくとも、これは XOR のような状況だと思います。
データが次のようになっているとします。
id | col1 | col2 | col3
---+------+------+------
1 | 1 | | 4
2 | | 5 | 4
3 | | 8 |
4 | 12 | 5 | 4
5 | | | 4
6 | 1 | |
7 | | 12 |
そして、列の1つだけが埋められている行に対して1列を返したいと思います.(col3
今のところ無視してください..
この 2 列の例から始めましょう。
SELECT
id, COALESCE(col1, col2) AS col
FROM
my_table
WHERE
COALESCE(col1, col2) IS NOT NULL -- at least 1 is filled in
AND
(col1 IS NULL OR col2 IS NULL) -- at least 1 is empty
;
これはうまく機能し、次のようになります。
id | col
---+----
1 | 1
3 | 8
6 | 1
7 | 12
しかし今、私はcol3
同様の方法で含めたいと思います。このような:
id | col
---+----
1 | 1
3 | 8
5 | 4
6 | 1
7 | 12
より一般的な方法でこれを行うにはどうすればよいですか?Postgres はそのような方法をサポートしていますか?
私はそのようなものを見つけることができません。