簡體   English   中英

如何為Oracle創建動態WHERE語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM