sql >> Databasteknik >  >> RDS >> Oracle

Oracle- Delad sträng kommaavgränsad (sträng innehåller mellanslag och på varandra följande kommatecken)

Prova detta för att analysera listdelen. Den hanterar NULLS:

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>

Tyvärr när du söker efter regex för att analysera listor, hittar du alltid detta formulär som INTE hanterar nollvärden och bör undvikas:'[^,]+' . Se här för mer info:Dela upp kommaseparerade värden till kolumner i Oracle.



  1. Kopiera en rad i samma tabell utan att behöva skriva de 50+ kolumnnamnen (medan du byter 2 kolumner)

  2. mysql_num_rows():det angivna argumentet är inte en giltig MySQL-resultatresurs

  3. Pandas:Hur man läser och skriver filer

  4. Hur lagrar man flera alternativ i en enda tabell?