我需要基于该列创建一个新列 col
,但是从第三个 -
第四个呢 -
. 示例:
ABC-123-aaa-INEEDTHIS-2000-BBB-123-CCC 111-AAAAA-bb-INEEDTHIS-BB-435-A
我怎样才能用大查询做到这一点?
我试着这样做:
SELECT REGEXP_EXTRACT(col, r'\w\w[^\d]\d\d') as newcol from mytable
我也想明白 regex
如果可能的话,在这个解决方案后面。
我需要基于该列创建一个新列 col
,但是从第三个 -
第四个呢 -
. 示例:
ABC-123-aaa-INEEDTHIS-2000-BBB-123-CCC 111-AAAAA-bb-INEEDTHIS-BB-435-A
我怎样才能用大查询做到这一点?
我试着这样做:
SELECT REGEXP_EXTRACT(col, r'\w\w[^\d]\d\d') as newcol from mytable
我也想明白 regex
如果可能的话,在这个解决方案后面。
1条答案
按热度按时间lrl1mhuk1#
下面是bigquery标准sql
最简单的方法是使用split函数,如下例所示
如果出于某种原因,您想使用正则表达式-您可以使用regexp\u extract,如下例所示
您可以使用问题中的示例数据测试、使用上述两种方法,如下例所示
有输出
regexp简介
[^-]*-
捕获条目,如ABC-
,123-
,aaa-等。(?:[^-]*-)
确保不会提取这些条目(?:[^-]*-){3}
确保跳过前三个这样的条目最后,
([^-]+)
提取目标碎片直到下一个-