我一直在嘗試撰寫一個正則運算式來匹配嚴重錯誤 17 - 25,查看錯誤日志。(我可以提供將錯誤日志記錄放入臨時表進行處理所需的完整代碼,但我認為與正則運算式無關)
我能得到的最接近的是......
...
where [Message] like '%Severity: [12][789012345]%'
...
...但是,由于第一組中的 1 第二組中的其他數字的組合,這最終會匹配 12、13、14、15 等嚴重性錯誤。
我最終只是寫了一組like陳述句來實作它......
...
where [Message] like '%Severity: 17%'
or [Message] like '%Severity: 18%'
or [Message] like '%Severity: 19%'
or [Message] like '%Severity: 20%'
or [Message] like '%Severity: 21%'
or [Message] like '%Severity: 22%'
or [Message] like '%Severity: 23%'
or [Message] like '%Severity: 24%'
or [Message] like '%Severity: 25%'
不幸的是,SQL Server 正則運算式非常有限,所以我不能使用完整的標準。
請注意,即使正則運算式和多個like陳述句之間的執行計劃相同,為了代碼簡潔,我更喜歡使用正則運算式,它看起來更干凈.. 除非多個like陳述句的性能更好,其中情況下我更喜歡性能,因為我經常查看具有數十萬或數百萬行的客戶端日志。
是否可以為數字范圍 17 - 25 撰寫 SQL Server 正則運算式?
uj5u.com熱心網友回復:
是否可以為數字范圍 17 - 25 撰寫 SQL Server 正則運算式?
不適用于本機 TSQL。
不過,您可以撰寫一個 CLR 函式來執行此操作。
使用本機 TSQL 字串函式,您可能會決議出嚴重性值,然后對其進行測驗。
WHERE TRY_CONVERT(INT,
SUBSTRING([Message],
NULLIF(PATINDEX('%Severity: [1-2][0-9]%', [Message] ) 10, 0),
2)
) BETWEEN 17 AND 25
訪問正確正則運算式的另一種方法是通過 Java語言擴展,但我自己從未走這條路。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481353.html
下一篇:T-SQL命令未進入CATCH
