简体   繁体   English

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

[英]Extract nested fields in sql using REGEXP_EXTRACT

I am using Google Big Query and querying Sample Records for column in table: 我正在使用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

Query: 查询:

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

Result: 18 null null 结果: 18 null null

I am getting only age value but other values as null. 我只获得年龄值,但其他值为null。 Any help will great on this. 任何帮助都会对此大有帮助。

The cntry and gdr values are not numeric, they consist of letters. cntrygdr值不是数字,它们由字母组成。

You may use \\w+ matching 1 or more "word" chars, ie letters, digits and underscores: 您可以使用\\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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM