首页 > 解决方案 > 在关键字后面的字符串中提取字符并在另一个关键字之前结束

问题描述

我有一个看起来像的表:

id
re|cid|13324242|
wa|cid|13435464|
fs|cid|2343532|

我想提取包含在“|cid|”之后的信息 在后面的“|”之前 元素。那是:

13324242
13435464
2343532

我想到了 substr() 但我不知道如何指定开始和结束元素。

标签: sqlgoogle-bigquery

解决方案


您可以REGEXP_REPLACE在此处使用(标准 SQL):

SELECT
    id,
    CASE WHEN id LIKE '%|cid|%'
         THEN REGEXP_REPLACE(id, '^.*\|cid\|(\d+)\|.*$', '\1') END AS cid
FROM yourTable;

这个想法是使用正则表达式替换cid从列中提取值id,如果它存在(如果不存在,我们将只返回NULL)。

这是一个演示,显示正则表达式逻辑是正确的。


推荐阅读