2016-03-29 6 views
0

私はSpring JPAを使用して選択クエリを書いています。私は、データベース内のエントリと比較するためのパラメータを渡しています。私が問題に走っているところ(コンパイルしない)は、UPPER()とcontains(%value%)を組み合わせようとするときです。例えば。 %UPPER(値)%JPAリポジトリクエリで無視されるケース

where ... AND (UPPER(l.name1) LIKE %UPPER(:search1)% OR UPPER(l.name2) LIKE %UPPER(:search2)% OR UPPER(l.name3) LIKE %UPPER(:search3)% 

がsearch1、search2、およびsearch3は私のサービスの実装から渡されるパラメータです。このロジックがクエリに大文字小文字を無視するという別の方法がありますか?あるいは、私は何か小さいものを逃していますか私は例を見つけようとしましたが、この状況に直接関連するものは見つかりませんでした。

ありがとうございました!

答えて

1

最初に、%のSQL関数(UPPER)をリテラル値でラップすることは想定されていません。

は、いずれの場合も CONCAT機能を使って、あなたの問題を解決することができます

...AND (UPPER(l.name1) LIKE CONCAT('%', CONCAT(UPPER(:search1), '%'))...

をまた、あなたは余分な左括弧を持っていることに注意してください。おそらくParameter in like clause JPQL

+0

に触発さLIKE %UPPER(:search3)%

ありがとう直後の余分な)を追加する必要があります!これは私がやろうとしていたもののために働いた! – Caleb

関連する問題