Postgresql

如何在兩個位置之間提取子字元串

  • August 18, 2020

我在表格(通知)中有一個文本列( emailbody ),它記錄了針對特定電子郵件發出的 HTML。在該 HTML 文件的某處,有一行文本包含以下行:

Delayed ${shipmentId} for Carrier

其中${shipmentId}表示為該特定記錄生成的特定 ID。範例:12345

基本上我想在表中的列中查詢所有的 shippingId 值,不幸的是這將涉及獲取 和 之間的字元串Delayed位置 for Carrier。我知道這可能會涉及使用 Postgres 的正則表達式函式之一,但我不太確定該怎麼做,或者是否有一些更簡單的東西。

SUBSTRING函式具有正則表達式支持,因此以下將起作用:

SELECT SUBSTRING(emailbody FROM 'Delayed (.*?) for Carrier') FROM notification

所謂擷取組 (),就是確保只擷取到貨件ID,而不是整個字元串“Delayed 12345 for Carrier”。使?擷取非貪婪,以確保匹配第一個’for Carrier’。

引用自:https://dba.stackexchange.com/questions/204201