文がy
がnullの場合x = null
が常にあるので、文はすべての場合には行を戻さないPreparedStatementでnull値を扱う方法(多分)?
SELECT * FROM tableA WHERE x = ?
で、パラメータがのjava.sql.PreparedStatement「のstmt」を介して挿入されている
stmt.setString(1, y); // y may be null
false(x IS NULL
である必要があります)。 1つのソリューションは
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)
ですが、同じパラメータを2回設定する必要があります。より良い解決策はありますか?
ありがとうございます!
ステートメント1:
SELECT * FROM tableA WHERE x is NULL
書2:
SELECT * FROM tableA WHERE x = ?
あなたの変数をチェックし、状況に応じて適切なステートメントを構築することができ
私は準備文を使用しません。私はSQL文字列を使用して、SQL文字列で '= NULL'を' Is Null'に置き換えます。魅力のように動作します。 –
これはタイプセーフではなく、おそらく注射攻撃に対して脆弱です。 – aioobe