[英]Dynamic query, parameters not working for where in
我正在使用oracle上的動態查詢,當我將字符串參數傳遞給處於條件的位置時,它不起作用。
for x in (
SELECT DISTINCT column_id
FROM table
WHERE column_id in (in_column_ids)
/* WHERE column_id in (15,16,17) =>works */
/* => in_column_ids is a varchar type which
holds comma separated value */
and column_title=in_column_title /* works */
)
在這里,如果我將值直接保留在該in_column_ids上,則查詢有效。 但是,作為參數傳遞的值似乎不適用於where in
。
任何想法 ?
IMO,您必須使用regexp_substr分割逗號分隔的變量。 您的查詢應如下所示:
for x in (
SELECT DISTINCT column_id
FROM table
WHERE column_id in (
SELECT DISTINCT regexp_substr(in_column_ids,'[^,]+', 1, LEVEL) FROM DUAL
CONNECT BY regexp_substr(in_column_ids, '[^,]+', 1, LEVEL) IS NOT NULL
)
/* WHERE column_id in (15,16,17) =>works */
/* => in_column_ids is a varchar type which
holds comma separated value */
and column_title=in_column_title /* works */
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.