SQL 中 SPLIT 上的条件 OFFSET

问题描述

我在 Google Big Query 上使用 sql

我有一列 MyColumn,其值采用这种格式:

Text0;Text1;Text2;Text3;Text4;T12=12/T26=5/T13=1/T55=ABC

我需要获取 T13 的值@H_502_12@(本例中为“1”)。

到目前为止我所做的代码是这样的:

 SELECT MyColumn,SPLIT(MyColumn,';')[SAFE_OFFSET(1)] Text1,';')[SAFE_OFFSET(2)] Text2,';')[SAFE_OFFSET(1)] Text3,';')[SAFE_OFFSET(1)] Text4,REPLACE(SPLIT(SPLIT(MyColumn,';')[SAFE_OFFSET(5)],"/")[SAFE_OFFSET(2)],"T13=","") T13
 FROM MyTable 

如果 T13 位于列表中的第三个,则此代码有效。 但我有它不存在的价值。例如:

Text0;Text1;Text2;Text3;Text4;T13=1/T55=ABC

Text0;Text1;Text2;Text3;Text4;T12=12/T26=5/T55=ABC/T13=1

一旦我通过“/”完成了 SPLIT,我如何动态检测 T13 是哪个位置并获取它的值?动态偏移是否可能?

谢谢

解决方法

使用PID pid;

regexp_extract()