Как включить поиск нескольких переменных при наличии окна поиска двоеточия - PullRequest
0 голосов
/ 09 июля 2019

Невозможно выполнить множественный поиск с =: variable.

У меня есть оператор Select, в котором я хочу получить данные, чтобы сделать это наиболее эффективным способом. У меня есть много мест для сбора данных, поэтому я хочу ноль, если не указано иное.

SELECT * FROM table WHERE (

(:nameColmn is null or nameColmn = :nameColmn)
AND
(:nameColmn2 is null or nameColmn2 = :nameColmn2)
AND
(:nameColmn3 is null or nameColmn3 = :nameColmn3)

)ORDER BY variable desc

есть 9 в том, что у меня есть, но это то же самое.

Появится окно, в котором я могу заполнить свои данные, если ничего не заполнено, оно останется пустым (null)

Мне нужно иметь возможность добавить более 1 переменной, например, при выполнении

(nameColmn IN ('xyz', 'xyy', 'xyx'))

Однако это не вызывает окно. как они установлены.

1 Ответ

0 голосов
/ 10 июля 2019

Если вы хотите использовать переменную Bind с несколькими значениями, ее можно передать как строку CSV и разбить на строки.

SELECT * FROM yourtable
WHERE namecolmn IN ( SELECT regexp_substr(:vals,'[^,]+',1,level)
                     FROM dual CONNECT BY
                          regexp_substr(:vals,'[^,]+',1,level) IS NOT NULL
                   )

Обратите внимание, что аргумент для этого (:vals) должен быть xyz,xyy,xyx, т.е. между ними не должно быть кавычек.

Другой вариант - использовать переменную подстановки (&vals), которая также запросит у вас ввод, и вы можете передать 'xyz','xyy','xyx', чтобы получить желаемый результат.

SET VERIFY OFF --diables substitution output.
SELECT * FROM yourtable
WHERE namecolmn IN (&vals);
...