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

Jak podzielić kolumnę varchar na wiele wartości w SQL?

Zawiń wartość w separator, którego używasz, w rozdzielaną listę, a następnie sprawdź, czy jest to podłańcuch listy rozdzielanej (również z otaczającymi ją ogranicznikami):

SELECT r.Value
FROM   AD_Ref_List r
       INNER JOIN xx_insert x
       ON ( ',' || x.XX_DocAction_Next || ',' LIKE '%,' || r.value || ',%' )
WHERE  r.AD_Reference_ID = 1000448
AND    x.xx_insert_id    = 1000283;

muszę zachować logikę w klauzuli whereClause

Naprawdę nie. Powyższe zapytanie będzie znacznie wydajniejsze.

Ale jeśli musisz, to:

SELECT Value
FROM   AD_Ref_List
WHERE  AD_Reference_ID = 1000448
AND    value IN (
  SELECT REGEXP_SUBSTR( XX_DocAction_Next, '[^,]+', 1, LEVEL )
  FROM   xx_insert
  WHERE  xx_insert_id    = 1000283
  CONNECT BY LEVEL <= REGEXP_COUNT( XX_DocAction_Next, '[^,]+' )
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL Developer 21.4.2 i SQLcl 21.4.1 są już dostępne

  2. Jak korzystać z funkcji LITAGG Oracle z unikalnym filtrem?

  3. Pobierz wiersz, który ma maksymalną wartość dla kolumny

  4. Jak wyeksportować wyniki zapytania Oracle do pliku JSON przy użyciu SQLcl

  5. Przeszukać bazę danych Oracle w poszukiwaniu tabel z określonymi nazwami kolumn?