Je suggère d'utiliser REGEXP_SUBSTR
qui est une excellente fonction pour atteindre les résultats escomptés :
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;
J'ai créé et testé un SQLFiddle
. Pour plus d'informations sur REGEXP_SUBSTR
vous voudrez peut-être lire la Oracle Docs
.