簡體   English   中英

動態查詢,參數不適用於哪里

[英]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 */
    )

查看SQLFIDDLE DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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