我有一個場景,我需要將CSV格式字符串中的'name ids'作爲綁定參數傳遞給SQL查詢,並檢查表中是否存在任何該ID 。它與表格中的列中的表名id相關的ID數組的異或。在SQL查詢中執行兩個數組的XOR
我無法知道如何做到這一點(數組與列的比較)。你能指出我朝那個方向嗎?
我無法使用Java或PL/Sql,因爲我的查詢將被另一個在運行時處理的團隊使用。
我有一個場景,我需要將CSV格式字符串中的'name ids'作爲綁定參數傳遞給SQL查詢,並檢查表中是否存在任何該ID 。它與表格中的列中的表名id相關的ID數組的異或。在SQL查詢中執行兩個數組的XOR
我無法知道如何做到這一點(數組與列的比較)。你能指出我朝那個方向嗎?
我無法使用Java或PL/Sql,因爲我的查詢將被另一個在運行時處理的團隊使用。
,如果你綁定多個值,而不是單個字符串, 你可以從你的CSV值做一個表:
select column_value as id
from table(sys.dbms_debug_vc2coll('linia 1','linia 2','linia 3'))
並使用如下語句使XOR
select a.id,b.id
from
table a
full outer join
(query)b
on a.id=b.id
希望這可以幫助你。
更新:我發現here查詢從CSV格式的值,製作表格:
with query2 as (
select substr(:mylist,
instr(','||:mylist||',', ',', 1, rn),
instr(','||:mylist||',', ',', 1, rn+1)
- instr(','||:mylist||',', ',', 1, rn) - 1) value
from (select rownum rn from dual
connect by level
<= length(:mylist)-length(replace(:mylist,',',''))+1)
)
select value
from query2
:
SELECT REGEXP_SUBSTR(mycsv,'[^,]+',1,LEVEL) element
FROM dual
CONNECT BY LEVEL < LENGTH(REGEXP_REPLACE(mycsv,'[^,]+')) + 1
然後使用IN
子句和上述作爲一個子查詢
SELECT * FROM t1
WHERE id IN (....the query above...)
你還沒有提出過一個問題 – Icarus
編輯了這個問題:) – Himz
編輯了答案:) –