首页 > 解决方案 > 正则表达式 SQL BigQuery 获取 '_' 之间的数字

问题描述

考虑到我有一张桌子。

第一:

用户身份 姓名
1 OFF472_100_012_280421
1 PPUU321_010_012_280421
2 HHTUE_011_012_280421
2 VENT471_012_012_280421

我想在名称列中的两个“_”之间提取第一个数字

理想的表应该是这样的

用户身份 姓名 数字
1 OFF472_100_012_324504 100
1 PPUU321_010_012_345625 10
2 HHTUE_011_012_345345 11
2 VENT471_012_012_345567 12

请帮我用sql查询!谢谢。

标签: sqlregexgoogle-bigquery

解决方案


REGEXP_EXTRACT与捕获组一起使用:

SELECT user_id, name, REGEXP_EXTRACT(name, r'^[^_]+_0*(\d+)')
FROM yourTable;

注意:您似乎还想去掉任何前导零,所以我已经这样做了。如果要保留所有数字,请使用^[^_]+_(\d+).


推荐阅读