如何用BigQuery正则提取指定单位前的目标数字
在BigQuery中提取紧跟指定单位的数字
直接用BigQuery的REGEXP_EXTRACT函数结合正则表达式就能解决,核心是只匹配数字紧跟指定单位的组合,过滤掉不跟目标单位的数字(比如例子里的1990)。
具体SQL语句
SELECT product_name, -- 提取紧跟gr/kg/ml/pcs的数字,捕获第一个分组的数字部分 REGEXP_EXTRACT(product_name, r'(\d+)(gr|kg|ml|pcs)') AS extracted_number FROM `your-project.your-dataset.your-table`;
正则说明
(\d+):捕获一个或多个数字,这就是我们要提取的目标值(gr|kg|ml|pcs):匹配指定的单位,确保数字后面紧跟这些单位之一- 整个正则只会匹配数字+目标单位的组合,像1990这种后面没有跟指定单位的数字,根本不会被匹配到,自然不会被提取
兼容数字和单位间有空格的情况
如果你的数据里存在数字和单位之间有空格的情况(比如milk 30 ml),可以把正则改成:
REGEXP_EXTRACT(product_name, r'(\d+)\s*(gr|kg|ml|pcs)')
这里的\s*用来匹配0个或多个空格,兼顾连写和空格分隔的情况。
内容的提问来源于stack exchange,提问作者Adiansyah
相关产品推荐
相关产品推荐

