■
3値論理を用いたSQL
3値論理を応用した興味深いSQLの書き方について。
PreparedStatementでNULLと比較する条件節だけ無視させたりとか、外部結合をUSING + WHERE節で実現したりとか。
(参考:3値論理)
SELECT *
FROM TableA LEFT JOIN TableB USING(a, b, c)
WHERE (TableA.hoge = TableB.fuga) IS NOT FALSE
ただし、OracleやMySQLなどではサポートされておらずPostgreSQLでしか動作確認されていないようです
(一応SQL92で定義されているらしいですが…)。
頭の片隅に覚えておくと、どこかで使えるかもしれないのでメモ。
FROM TableA LEFT JOIN TableB USING(a, b, c)
WHERE (TableA.hoge = TableB.fuga) IS NOT FALSE
posted at 10:11 [ /misc ]







