繁体   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