2016-07-25 6 views
0

指定されたパラメータが存在する場合、MySQLの文のチェックを実行する方法を探しています。私が覚えているように、私はそれを達成するためにOracleで次のことを行うことができます:パラメータがnullの場合のMySQL構文のチェック

select s.* from Site s 
where s.study = :study 
and (:enabled is null or s.enabled = :enabled) 

これもMySQLでも可能なことですか?同じコードはエラーなしで実行されますが、決してレコードを返しません。

私の目標は、私のJavaコードで複数のlfsとelsesを避けることです。

select s.* from Site s 
where s.study = :study 

及びそのようなパラメータがnullでない場合:有効なパラメータがnullの場合には、クエリはそのように見えるというように動作しなければならない

select s.* from Site s 
where s.study = :study 
and s.enabled = :enabled 

と私は単一であることやりたいですクエリ

+0

'AND(s.enabled IS NULL OR s.enabled =:enabled)' –

+0

':enabled is nullはむしろ意味がありません。クライアントサイドのコードで、dbを使わずにそれをチェックすることができます。 ':enabled'の値はあなたが提供する値です。あなたは '' s.enabled''をテストする必要があるということを意味しています。 –

+0

すべての可能性のあるケースに対して1つのクエリしかないと想像すれば、それほど意味がありません。いいえ、elsesの男性はいません。それは非常に便利です。目的は、パラメータが実際にはnullの場合、そのクエリの列全体ではなく、パラメータ全体を無効にすることです。 – smoczyna

答えて

0

私は、これはあなたが求めているものであると信じて:

SELECT s.* from Site s 
WHERE s.study = "some_study" 
AND (s.enabled IS NULL OR s.enabled = '' OR s.enabled = "enabled"); 
+0

それはそうではありません、私の目標は、パラメータではなく、列が存在するかどうかを確認することです。それは複数のifと他のJavaコードを避けることです。 Oracleではこれを行うことができ、この値が存在するかどうかは気にしません。 SQLパーザは、paramtereがnullなので、クエリに影響しないので、行を無視します – smoczyna

+0

@smoczyna、おそらく[this](http://stackoverflow.com/questions/9855331/check-if-a-parameter-is-null - または - ストアドプロシージャの空)は、あなたが必要以上ですか? – BrandonM

0

残念ながら、それはダに大きく依存していますtabaseドライバ。私の最初のクエリは、データベースツールで実行されたときに機能しますが、JPAで実行する必要はありません。だから私はこの質問を、それ以上の答えを必要としないので閉じています。私はあなたの時間を無駄にしてごめんなさい。

関連する問題