sql >> Databasteknik >  >> RDS >> Oracle

Hur delar man upp en varchar-kolumn som flera värden i SQL?

Slå in värdet i avgränsaren du använder i den avgränsade listan och kontrollera sedan om det är en understräng till den avgränsade listan (även med avgränsningstecknen omsluten):

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;

Jag måste behålla logiken i whereClausen

Verkligen, inte. Ovanstående fråga kommer att vara mycket effektivare.

Men om du måste då:

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. Använda PostgreSQL logisk replikering för att upprätthålla en alltid uppdaterad läs-/skriv-TEST-server

  2. Python-modulen cx_Oracle-modulen kunde inte hittas

  3. Hur man stoppar/startar MySQL med MySQL Workbench

  4. 7 sätt att hitta dubbletter av rader i PostgreSQL medan du ignorerar den primära nyckeln