Tôi khuyên bạn nên sử dụng REGEXP_SUBSTR
đó là một chức năng tuyệt vời để đạt được kết quả mong đợi của bạn:
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;
Tôi đã tạo và thử nghiệm một SQLFiddle
. Để biết thêm thông tin về REGEXP_SUBSTR
bạn có thể muốn đọc Tài liệu Oracle
.