oracle有很多異常,並且有不同的掩碼是你想要對它們全部進行編碼嗎?
您均流的正則表達式可以看起來像:
select regexp_replace('ORA-01400: cannot insert NULL into ("ABC_OWNER"."ABC_PART"."REGION")'
,'^ORA-\d+:\s(.+)\(.+\.\"(.+)\"\)', '\1 \2') from dual
編輯:。的regexp的「^ ORA- \ d +描述:\ S(+)(+ \「(+)\ 「)」
- 「^」 - 開始字符串
- 的 「ORA-」 - 簡單的字符串 「ORA-」
- 「\ d +」 - 一系列數字
- 「:」 - 簡單冒號
- 「\ s」 - 空格
- 「(。+)」 - 任何字符中最長的字符串。並且
()
表示將被捕獲爲組(\ 1)。
- 「(」 - 左括號
- 「+」 - 任何的最長的字串
- 。」 「 - 簡單點
- \」 - 雙引號
- (+) - 中的任何字符最長的字符串和下一組(\ 2)
- \」 - 雙引號
- )」 - 右括號
正則表達式中的點6,8和11將爲h不尋常的搜索它會嘗試罰款從第一組最長的字符串。這意味着如果在「6」,「8」和「11」的長度之間存在一些變體。 「6」將首先選擇,然後將「8」接下來選擇的項目和「11」項選擇最少。 舉例來說,如果你有串aaaaaa
和正則表達式(.+)(.+)
第一組將採取aaaaa
和第二a
你試過了什麼?另外:您不僅刪除錯誤代碼,還更改了消息:只顯示不能插入NULL的列,而不顯示模式和表。這會幫助你還是未來證明是一個壞主意? – mathguy
在實際的用例中,我不需要顯示模式或表,因爲用戶正在將數據上傳到表中並且已經知道它。用戶只需要知道上傳過程中是否有錯誤。在我的實現中,我將用戶上傳的數據合併到實際表中,並在錯誤日誌表中記錄任何錯誤,並返回這些錯誤的返回(如果有的話)。我只是想保持簡單和可讀,沒有錯誤代碼,架構名稱等。謝謝 – ppatkar