问题描述
我在 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()