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

Oracle- Split streng kommasepareret (streng indeholder mellemrum og på hinanden følgende kommaer)

Prøv dette for at analysere listedelen. Den håndterer NULLER:

SQL> select regexp_substr('12 3,456,,abc,def', '(.*?)(,|$)', 1, level, null, 1) SPLIT, level
    from dual
    connect by level <= regexp_count('12 3,456,,abc,def',',') + 1
    ORDER BY level;

SPLIT                  LEVEL
----------------- ----------
12 3                       1
456                        2
                           3
abc                        4
def                        5

SQL>

Desværre, når du søger efter regex'er til parsing lister, vil du altid finde denne formular, som IKKE håndterer nuller og bør undgås:'[^,]+' . Se her for mere info:Opdel kommaseparerede værdier til kolonner i Oracle.



  1. Sammenlign datoer i T-SQL, ignorer tidsdelen

  2. Ydeevne overraskelser og antagelser:SÆT ANTAL TIL

  3. Kan ikke indsætte Unicode ved hjælp af cx-Oracle

  4. PHP PDOException:SQLSTATE[HY093]:Ugyldigt parameternummer