Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zaznacz wszystkie wiersze, które występują na liście 2927 identyfikatorów

Oto inny sposób podejścia do tego problemu, przekształcając identyfikatory w tabelę logiczną za pomocą wspólnego wyrażenia tabelowego (CTE), a następnie łącząc się jak zwykle. Łatwiej będzie o tym myśleć w ten sposób:

-- Build the list of IDs.
with data(str) as (
    select '67,122,173,256,284,285,288,289,291,294,296,298,301,320,346,359
     ,366,425,428,454,528,573,576,584,593,654,654,694,722,838,1833,1976,1979,1979,2002
     ,2004,2005,2045,2083,2109,2114,2126,2126,2157,2204,2204,2211,2212,2332,2576' 
    from dual
),
-- Turn the list into a table using the comma as the delimiter. Think of it
-- like a temp table in memory.
id_list(id) as (
  select regexp_substr(str, '(.*?)(,|$)', 1, level, NULL, 1)
  from data
  connect by level <= regexp_count(str, ',') + 1
)
-- Select data from the main table, joining to the id_list "temp" table where
-- the ID matches.
select tablename.*
from tablename, id_list
where tablename.id = id_list.id;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przykład Oracle UTL_HTTP Post Multipart/Form-Data (JSON i ZIP)

  2. SQL:wstaw wiersze z sumowanymi wartościami

  3. pobierz listę liczb pomiędzy dwiema kolumnami

  4. Błąd podczas aktualizacji dołączenia

  5. wyrocznia varchar na numer