使用REGEXP_EXTRACT在sql中提取嵌套字段

时间:2016-11-17 16:56:36

标签: sql regex google-bigquery

我正在使用Google Big Query和查询 表格中列的样本记录:

age=18;cntry=us;coid=9911718;csize=c;func=ops;gdr=f;grp=2099628;grp=85824;grp=1548357;grp=88799;grp=2059383;grp=1937629;ind=78;lang=en;mod=0;occ=511;optout=false;reg=21;s=0;seg=9001;seg=761;seg=541;seg=521;seg=1068;seg=557;seg=546;seg=514;seg=504;seg=183;seg=263;sub=0;tile=1;tile_p=1;title=ic;u=nql8uz5qrt8vcqh5tkcqq697

查询:

SELECT REGEXP_EXTRACT(col,r'age=(\d+)') AS age,
  REGEXP_EXTRACT(col,r'cntry=(\d+)') AS country,
  REGEXP_EXTRACT(col,r'gdr=(\d+)') AS gender from table x

结果:18 null null

我只获得年龄值,但其他值为null。任何帮助都会很好。

1 个答案:

答案 0 :(得分:0)

cntrygdr值不是数字,它们由字母组成。

您可以使用\w+匹配1个或多个“字”字符,即字母,数字和下划线:

SELECT REGEXP_EXTRACT(col,r'age=(\d+)') AS age,
  REGEXP_EXTRACT(col,r'cntry=(\w+)') AS country,
  REGEXP_EXTRACT(col,r'gdr=(\w+)') AS gender from table x