sql >> Database teknologi >  >> RDS >> Oracle

Hvordan opdeles en varchar-kolonne som flere værdier i SQL?

Pak værdien ind i den afgrænsningstegn, du bruger, i den afgrænsede liste, og tjek derefter, om det er en understreng af den afgrænsede liste (også med afgrænsningerne viklet rundt):

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;

Jeg skal beholde logikken i whereClause

Virkelig, lad være. Ovenstående forespørgsel vil være meget mere effektiv.

Men hvis du skal så:

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. Hvordan opretter jeg en lagret procedure, der valgfrit vil søge i kolonner?

  2. Brug TYPEPROPERTY() til at returnere oplysninger om en datatype i SQL Server

  3. Sådan skilles DATE og TIME fra DATETIME i MySQL

  4. Optælling af referencer til en post i en tabel via fremmednøgler