Saya menggunakan Postgres. Kueri filter seperti ini:

SELECT * FROM Entity E
WHERE E.field1 = ?
AND E.field2 = ?
AND E.field3 = ?
AND E.field4 = IN (?field4[])

?field1 dan ?field2 adalah bidang wajib sehingga akan selalu ada. ?field3 dan ?field4 bersifat opsional. Saya ingin menggunakan AND E.field3 = ? & AND E.field4 = IN (?field4[]) hanya bila nilai ?field3 dan ?field4[] ada, dan abaikan sebaliknya

0
bob 9 November 2020, 07:34

1 menjawab

Jawaban Terbaik

Anda dapat menggunakan pernyataan case dalam klausa where seperti di bawah ini

SELECT * FROM Entity E
WHERE 
CASE WHEN E.field3 IS NOT NULL and E.field4 IS NOT NULL THEN
E.field1 = ?
AND E.field2 = ?
AND E.field3 = ?
AND E.field4 IN (?field4[])
ELSE
E.field1 = ?
AND E.field2 = ?
END 

1
Akhilesh Mishra 9 November 2020, 05:19