Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Feldwerte je nach Textauswahl verketten Oracle SQL

Der korrekte Operator für Zeichenfolgenvergleiche ist LIKE. Beachten Sie, dass es für CLOBs funktioniert, nicht nur für VARCHAR2.

Im folgenden Beispiel erstelle ich die Tabelle der Eingabezeichenfolgen im Handumdrehen mit einer bestimmten Methode. Es gibt mehrere andere Methoden - verwenden Sie die, mit der Sie vertraut sind.

with
     a_x ( a, b ) as (
       select to_clob('atveroeosipsumloremipsumdolor'), 1 from dual union all
       select to_clob('stetclitakasdtest')            , 2 from dual union all
       select to_clob('noseatakimataatveroeosipsum')  , 3 from dual union all
       select to_clob('loremipsumdolor')              , 4 from dual union all
       select to_clob('consetetursadipscingelitr')    , 5 from dual
     ),
     input_strings ( str ) as (
       select column_value
       from   table ( sys.odcivarchar2list ( 'atveroeosipsum', 'test', 'stetclitakasd',
                                             'noseatakimata', 'loremipsumdolor',
                                             'consetetursadipscingelitr'
                                           )
                    )                    
     )
select   t2.str, listagg(t1.b, ',') within group (order by t1.b) as ids
from     a_x t1 
         join input_strings t2 on t1.a like '%' || t2.str || '%'
group by t2.str
;

STR                        IDS
-------------------------  ---
atveroeosipsum             1,3
consetetursadipscingelitr  5
loremipsumdolor            1,4
noseatakimata              3
stetclitakasd              2
test                       2