sql >> Database >  >> RDS >> Oracle

Waarden van veld samenvoegen afhankelijk van tekstselectie Oracle SQL

De juiste operator voor tekenreeksvergelijkingen is LIKE. Merk op dat het werkt voor CLOB's, niet alleen voor VARCHAR2.

In het onderstaande voorbeeld maak ik de tabel met invoerreeksen on-the-fly met behulp van een bepaalde methode. Er zijn verschillende andere methoden - gebruik de methode waarmee u vertrouwd bent.

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



  1. hoe werken de groupby en count in sql

  2. Hoe sqlparameter doorgeven aan IN()?

  3. Waarom vertraagt ​​het veranderen van utf8 naar utf8mb4 mijn database?

  4. Laravel 5.5 Error Basistabel of weergave bestaat al:1050 Tabel 'gebruikers' bestaat al