Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann die durch Substring und Instring verursachte Codeduplizierung reduziert werden?

Ich schlage vor, REGEXP_SUBSTR zu verwenden Dies ist eine großartige Funktion, um Ihre erwarteten Ergebnisse zu erzielen:

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;

Ich habe ein SQLFiddle erstellt und getestet . Weitere Informationen zu REGEXP_SUBSTR Vielleicht möchten Sie die Oracle Docs lesen .