sql >> Database >  >> RDS >> Oracle

Hoe een varchar-kolom te splitsen als meerdere waarden in SQL?

Wikkel de waarde in het scheidingsteken dat u in de lijst met scheidingstekens gebruikt en controleer vervolgens of het een subtekenreeks is van de lijst met scheidingstekens (ook met de scheidingstekens eromheen):

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;

ik moet de logica in de whereClause houden

Echt niet doen. De bovenstaande zoekopdracht zal veel efficiënter zijn.

Maar als het moet:

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. Hoe kunt u overerving in een database weergeven?

  2. Verschil tussen een gebruiker en een login in SQL Server

  3. java.sql.SQLException Parameterindex buiten bereik (1> aantal parameters, dat is 0)

  4. PostgreSQL:een berekende kolom gebruiken in dezelfde query