簡體   English   中英

在 Bigquery 中使用 REGEXP_EXTRACT 在破折號之間查找字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM