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

Oracle LITAGG() do odpytywania użyj

Po pierwsze, prawie zawsze efektywniej jest zrobić wszystko w jednym oświadczeniu, jeśli to w ogóle możliwe.

Drugie zapytanie nie działa, ponieważ zwracasz wszystko w jednym ciągu. To nie lista rozdzielana przecinkami zgodnie z wymaganiami instrukcji IN.

Jest jednak mały trik, aby to obejść. Zakładając, że używasz ciągu do czegoś pomiędzy dwoma instrukcjami SELECT, możesz pobawić się regexp_substr() aby zmienić swój ciąg w coś użytecznego.

Coś takiego by zadziałało;

select city
  from vwpersonprimaryaddress
 where state in ( 
           select regexp_substr(v_province,'[^'',]+', 1, level) 
             from dual
          connect by regexp_substr(v_province, '[^'',]+', 1, level) is not null
                  )

Zmienna v_province musiałby zostać zmieniony, aby był cytowany dwukrotnie, na przykład '''AB'',''AZ'',''BC''' aby to zadziałało.

Oto przykład pracy



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja agregacji Oracle do alokacji kwoty

  2. Oracle tworzy łącze do bazy danych za pomocą schematu proxy

  3. Używanie OracleParameter z C# TimeSpan — literał nie pasuje

  4. Jak sformatować typ Interval do formatu GG:MM?

  5. Próba utworzenia pakietu - błąd PLS-00330