sql >> Databáze >  >> RDS >> Oracle

Jak rozdělit sloupec varchar jako více hodnot v SQL?

Zabalte hodnotu do oddělovače, který používáte v oddělovacím seznamu, a poté zkontrolujte, zda se jedná o podřetězec oddělovaného seznamu (také s oddělovači kolem něj):

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;

Musím zachovat logiku v whereClause

Opravdu, ne. Výše uvedený dotaz bude mnohem efektivnější.

Ale pokud musíte:

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. Odstranění řádků z nadřazených a podřízených tabulek

  2. Jak se zbavit chyby MySQL „Připravený příkaz je třeba znovu připravit“

  3. Jak zašifrovat rozdělenou databázi v Accessu 2016

  4. Chyba hodnoty při importu dat do tabulky postgres pomocí psycopg2