2013-06-18 4 views
0

Я создаю отчет в Oracle Apex 4.2. Таблица, в которой создается отчет, содержит несколько значений внутри одного из столбцов.Запрос с условиями для нескольких столбцов значений

----------------------------------- 
| ID | NAME | PROJECT_ID | 
----------------------------------- 
| 1 | P1 | 23:45:56  | 
| 2 | P2 | 23   | 
| 3 | P3 | 45:65  | 
----------------------------------- 

Я хотел бы построить запрос для извлечения имен на основе project_id.

Select name from table where project_id = 23; 

Это, очевидно, будет возвращать P2 только, однако я хотел бы построить запрос, который будет возвращать P1 и P2, если мы искали 23.

Любая помощь очень ценится.

ответ

5

Вы можете использовать LIKE вместо =:

Select name from table where project_id LIKE '%23%'; 

Если у вас есть общий разделитель, такие как «:» в вашем примере вы можете использовать следующие исключить результаты, как «123»:

SELECT name FROM table WHERE ':' || project_id || ':' LIKE '%:23:%' 

Объединяя ограничитель к передней и задней части строки, вы не должны написать несколько критериев: LIKE '23:% «ИЛИ LIKE„%: 23:%“ИЛИ LIKE»%: 23 'для обработки первого и последнего числа в списке.

+0

Мне очень жаль, но я не понимаю, почему люди голосуют за этот ответ. Этот запрос будет возвращать имена для project_ids вроде: 23,123, 230, 231 и т. Д. ... –

+0

На основании выборочных данных было неясно, что ваши данные были «123», которые вы пытались избежать. Будет ли 23 всегда разделяться «:»? –

+0

Да, диапазон данных составляет от 1 до 50000. Всегда разделяется двоеточием. Если есть один экземпляр, нет двоеточия. Перед первым и после последнего знака нет двоеточия. –

1

Это общая конструкция в Apex благодаря встроенной поддержке строк с разделителями двоеточия (например, для управления шаттлом и другими типами предметов).

Я обычно использую этот шаблон:

Select name from table where INSTR(':'||project_id||':',':23:') > 0; 

P.S. Жаль, что это имя столбца - я бы назвал его чем-то вроде PROJECT_ID_LIST.

+0

Спасибо Джеффри, челноки могут быть иногда настоящей болью. Что касается соглашения об именах столбцов, я согласен с вами в том, что его следует называть по-другому, но это только пример ... –

Смежные вопросы