0

我有包含这样数字的字符串:

a20cdac0_19221bdc12022bab3fe05a43df4a7dbe

我只需要在下划线符号后获取符号:

19221bdc12022bab3fe05a43df4a7dbe

不幸的是,这些符号的数量总是不同的,所以我不能只使用 RIGHT 函数。

我知道可能 REGEXP 可能会有所帮助,但我不明白如何准确地使用它。将非常感谢您的帮助。

4

2 回答 2

0

您可以像这样使用拆分功能

select split('a20cdac0_19221bdc12022bab3fe05a43df4a7dbe','_')[ORDINAL(2)];

https://cloud.google.com/bigquery/docs/reference/standard-sql/string_functions#split

于 2020-10-28T15:02:58.440 回答
0

以下是 BigQuery 标准 SQL(使用正则表达式)

regexp_extract(value, r'_(.*)') regexp_approach

是否适用于您问题的样本值

regexp_extract('a20cdac0_19221bdc12022bab3fe05a43df4a7dbe', r'_(.*)') regexp_approach           

结果是

在此处输入图像描述

然而,另一个正则表达式选项是regexp_replace在下面的示例中使用

regexp_replace(value, r'^.*?_', '')

注意:split在这种情况下使用也是一种选择,除非您有多个,_在这种情况下您将获得第一个和第二个之间的部分_

split(value, '_')[safe_offset(1)]    

此外,如您所见,您需要在不存在safe的情况下使用以防止错误_

于 2020-10-28T18:45:35.880 回答