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

Hvordan reducerer man kodeduplikering forårsaget af understreng og instring?

Jeg foreslår, at du bruger REGEXP_SUBSTR hvilket er en fantastisk funktion til at opnå dine forventede resultater:

SELECT
    l.DBKEY,
    l.DBTIME,
    REGEXP_SUBSTR(l.DBUSER, '[^$]+$')                 AS USERID,
    REGEXP_SUBSTR(l.DESCRIPTION, '[0-9]{4}')          AS ERROR_NUM,
    REPLACE(REGEXP_SUBSTR(l.DESCRIPTION, 'Planogram:[^\]+\\n'), '\n', '')
                                                      AS DESCRIPTION,
    REGEXP_SUBSTR(l.DESCRIPTION, '\d+$')              AS SEVERITY
FROM
    EVENT_LOG l;

Jeg har oprettet og testet en SQLFiddle . For flere oplysninger om REGEXP_SUBSTR du vil måske læse Oracle Docs .



  1. Der opstod en fejl under læsning af data fra udbyderen. Fjerncertifikatet er ugyldigt i henhold til valideringsproceduren

  2. mySQL automatisk stigning stiger med 10 (ClearDB &Node)

  3. Twitter-konkurrence ~ gemmer tweets (PHP &MySQL)

  4. Kan en attribut angive en tabel frem for en anden?