Mysqlには、nullセーフである比較演算子<=>があります。次のようなプリペアドステートメントを作成するときに、Javaプログラムでこれを使用します。
String routerAddress = getSomeValue();
String sql = "SELECT * FROM ROUTERS WHERE ROUTER_ADDRESS <=> ? ";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, routerAddress);
次に、H2データベースに切り替えたいと思います。純粋なSQLで<=>演算子を作成するにはどうすればよいですか(たとえば、ISNULLおよびISNOT NULLを使用)?stmt.setString操作を1回だけ使用したいと思います。列名を数回書き込んでもかまいません。
関連する質問は、SQLでnull==nullを取得することです。しかし、その答えでは、検索値を2回書き込む必要があります(つまり、PreparedStatementに2つの疑問符があります)!?
参照: http ://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_equal-to