У меня есть таблица элементов, каждая из которых имеет идентификатор элемента (int). Я хочу показывать только элементы с идентификатором элемента на основе строки. Например, я хочу отображать элементы «12, 1005, 2». Эта строка отличается каждый раз. Как мне это сделать?SQL Как показывать только поля из списка чисел
ответ
Если вы используете Oracle, вы можете использовать IN:
select from item i where i.id in (12,1005,2)
Как бы я использовал строку? Если у меня есть 'string a =" 12,1005,2 "', как я могу использовать это в запросе sql? – Kevin
Неравномерный подход (с точки зрения производительности) может быть «%», «||» to_char (i.id) || ',%' like ',' || '12, 1005,2 '||', ' –
I не знаю, в чем проблема, которую вы пытаетесь решить, но я думаю, что лучше обрабатывать строку в вашем приложении. Можете ли вы использовать Execute Immediate? Вы можете сконфигурировать sql -> «select from item i, где i.id in (« с вашей строкой, а затем использовать немедленное выполнение запроса. – AndreDuarte
является ваш параметр всегда состоит из 3-х цифр, или он может быть различным во время выполнения ?? если он исправлен, вы можете использовать substr и instr для резки
Я считаю, что во время выполнения может быть другим. – Kevin
Я бы рассмотрел подход, задокументированный Джастином Кейв, с вопросом, How can I select from list of values in Oracle. Том Ките документирует аналогичный подход (без регулярных выражений) на сайте Ask Tom.
Поскольку вы находитесь в среде Oracle Apps с помощью Oracle Reports, я просто привести пример с использованием элементов таблицы:
with x as
(select '12, 1005, 2' str from dual
)
select *
from inv.mtl_system_items_b item
where item.organization_id =
&org_id
and item.inventory_item_id in
(select to_number(regexp_substr(str,'[^,]+',1,level)) element
from x
connect by level <= length(regexp_replace(str,'[^,]+')) + 1
)
процедурно в Oracle Reports, можно создать функцию в виде программного модуля, который выполняет эту синтаксический разбор этого параметра с разделителями-запятыми с использованием аналогичной логики (опять же, см. функцию списка парсинга Justin Cave (ответ, связанный с вопросом, который я упоминал выше).
Точно так же строка содержит разделенные запятыми ints и вы хотите найти все записи с эти идентификаторы? –
Да, это именно так. – Kevin
Какой DBM S вы используете? Postgres? Oracle? –