在bigquery列中提取子字符串

mcdcgff0  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(426)

我的大查询表中有一列存储如下:

id           order                            
  <dbl>       <chr>                            
     1 My Order ID: MF212308504-PG5DGHJF
     2 My Order ID: MF202222301-ASJDHASD
     3 My Order ID: MF223408511-PSSDAVQ9
     4 My Order ID: MF765368504-PG59RVQ9

我想提取一个表如下:

id           order                            
  <dbl>       <chr>                            
     1     MF212308504
     2     MF202222301
     3     MF223408511
     4     MF765368504

意思是,在“顺序”栏中,我需要提取:
“我的订单id:”之后的所有内容
.. 在第一个“-”之前
它将始终是一个由10个数字/字符组成的字符串。
我通常是在r中做的-有没有直接在大查询中做的方法?

t3psigkw

t3psigkw1#

这适用于您提供的数据:

select regexp_extract(string_col, ': ([^-]+)-')
fruv7luv

fruv7luv2#

另一种天真的方法是

SELECT SPLIT(SUBSTR(`order`, 14), '-')[OFFSET(0)]

“我的订单id:”之后的所有内容。。在第一个“-”之前。它将始终是一个由10个数字/字符组成的字符串。
我想,你的意思是说11个数字/字符
所以在静态定义位置的特殊情况下更简单

SELECT SUBSTR(`order`, 14, 11)

相关问题