[英]How can I create a dynamic WHERE statement for Oracle
我需要能夠根據傳遞的變量動態更改WHERE部分。 例如
SELECT item,description
FROM TABLE WHERE department = :department
我正在嘗試做的是,如果傳遞的變量是“ NY”,那么我想查詢CT,NJ和NY中的狀態,但是如果變量是“ CA”,則只需查詢CA。 我可以在WHERE部分中使用CASE WHEN語句嗎?
我不能使用SP或游標只是查詢。
那會是
where (department in ('CT', 'NJ', 'NY') and :department = 'NY')
or (department = 'CA' and :department = 'CA')
我相信您想要的邏輯是:
where (department in ('CT', 'NJ', 'NY') and :department = 'NY') or
(department = :department)
這應該適用於任何狀態,而不僅僅是所列的四個狀態。
您也可以嘗試一下
INSTR(DECODE(:部門,'CA','CA','NY','CT,NJ,NY'),部門)> 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.