Поиск нескольких значений из одного поля PLSQL

#oracle #plsql

#Oracle #plsql

Вопрос:

Я создаю отчет в PLSQL.

Отчет работает нормально, и, кроме того, мне нужно добавить, когда пользователи ищут несколько значений из одного поля, разделенных на ; . Он должен выбрать все данные, которые он ввел.

Пример: Продавец — Аманда; Мишель; Шармейн

Затем он должен выбрать данные, касающиеся amenda, michelle и sharmain.

Мой код возвращает данные только для одного значения.

пожалуйста, обратитесь к этой строке из кода and ifsapp.Customer_Order_API.Get_Salesman_Code(i.order_no) LIKE 'amp;Salesman'

 where  i.catalog_group='FPMB'
       and i.order_no like 'M%'
       and ((i.invoice_date between to_date( 'amp;From_Date', 'YYYY/MM/DD' ) and to_date( 'amp;To_Date', 'YYYY/MM/DD' ) ) or ('amp;From_Date' is null and 'amp;To_Date' is null))
       and t.source_ref1=i.order_no
       and (t.source_ref3=i.release_no)
       and (t.source_ref2=i.line_no)
       and i.contract=t.contract
       and t.transaction_code='OESHIP'
       and t.qty_reversed=0
       and t.source_ref1=i.order_no
       and t.serial_no <> '*'
       and t.cost<>0.00
       and i.order_no LIKE 'amp;Order_No
       and ifsapp.Customer_Order_API.Get_Salesman_Code(i.order_no) LIKE 'amp;Salesman'
 

Комментарии:

1. Пожалуйста, покажите нам вашу полную хранимую процедуру

Ответ №1:

Вы можете использовать иерархический запрос следующим образом:

 ifsapp.Customer_Order_API.Get_Salesman_Code(i.order_no) IN
(SELECT TRIM(REGEXP_SUBSTR('amp;Salesman','[^;] ',1,LEVEL))
  FROM DUAL CONNECT BY TRIM(REGEXP_SUBSTR('amp;Salesman','[^;] ',1,LEVEL)) IS NOT NULL)
 

Комментарии:

1. Привет, Tejash, код работал так, как я хотел. Спасибо..

2. Рад узнать, что это помогло. Если это решило вашу проблему, вы должны пометить это как принятое, чтобы этот вопрос был отмечен как решенный.