gpt4 book ai didi

sql - BigQuery 返回正则表达式的所有匹配项

转载 作者:行者123 更新时间:2023-12-05 09:20:39 26 4
gpt4 key购买 nike

在 Big Query 中,当我进行正则表达式搜索时,它只返回第一次匹配/出现。

有什么方法可以返回所有 匹配项,连接起来吗?可能像 GROUP_CONCAT 这样的东西?

REGEXP_EXTRACT(body, r"(\w+ )")

最佳答案

在 BigQuery 支持的最近引入的标准 SQL 中 - 您可以尝试如下

SELECT 
body,
(SELECT STRING_AGG(word) FROM words.word) AS words
FROM (
SELECT
body, REGEXP_EXTRACT_ALL(body, r'(\w+)') AS word
FROM (
SELECT 'abc xyz qwerty asd' AS body UNION ALL
SELECT 'zxc dfg 345' AS body
)
) words

不要忘记取消选中 Show Options
下的 Use Legacy SQL 复选框查看更多详情 REGEXP_EXTRACT_ALLSTRING_AGG


如果您对 BigQuery 中现在称为旧版 SQL 的内容感到困惑 - 您可以尝试如下所示的内容

SELECT 
body,
GROUP_CONCAT(SPLIT(body, ' ')) AS words
FROM
(SELECT 'abc xyz qwerty asd' AS body),
(SELECT 'zxc dfg 345' AS body)

我明白,这不一定正是您所需要的 - 但可能会有所帮助


另一种使用 BigQuery 遗留 SQL 的方法更适合您必须使用正则表达式的情况。
例如 - 假设您只需要从正文中提取数字想法是使用 REGEXP_REPLACE 从 body 中除数字以外的任何东西。然后应用上面描述的 SPLIT() + GROUP_CONCAT()

SELECT 
body,
GROUP_CONCAT(SPLIT(REGEXP_REPLACE(body, r'(\D)+', ':'), ':')) AS words
FROM
(SELECT 'abc 123 xyz 543 qwerty asd' AS body),
(SELECT '987zxc 123 dfg 345' AS body)

关于sql - BigQuery 返回正则表达式的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37096531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com