[英]Finding strings between dashes using REGEXP_EXTRACT in Bigquery
在 Bigquery 中,我試圖找到一種方法來根據字符串前面有多少破折號來提取字符串的特定段。 字符串中的總破折號數將始終相同。 例如,我可以在以下字符串中查找第二個破折號之后和第三個破折號之前的字符串:
abc-defgh-hij-kl-mnop
目前,我正在使用以下正則表達式進行提取,從后面計算破折號:
([^-]+)(?:-[^-]+){2}$
問題是,如果破折號之間沒有任何內容,則正則表達式不起作用。 例如,像這樣返回null :
abc-defgh-hij--mnop
有沒有辦法使用正則表達式在一定數量的破折號之后提取字符串並在隨后的破折號之前將其切斷?
謝謝!
以下是 BigQuery 標准 SQL
在您的情況下,最簡單的方法是使用 SPLIT 和 OFFSET,如下例所示
SELECT SPLIT(str, '-')[OFFSET(3)]
以上將為abc-defgh-hij--mnop
返回空字符串
防止在調用不存在的元素時出錯 - 最好使用 SAFE_OFFSET
SELECT SPLIT(str, '-')[SAFE_OFFSET(3)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.