如何在 BigQuery 中使用 REGEXP_EXTRACT 提取数值?
How to extract just numeric value with REGEXP_EXTRACT in BigQuery?
我正在尝试仅从 BigQuery 的特定列中提取数字。
相关字段的格式为:value = "Livraison_21J|Relais_19J" or "RELAIS_15 DAY"
我正在尝试为关键字 "Relais" 前面的每个值提取天数。
天数范围从 1 到 100。
我用这个来做到这一点:
SELECT CAST(REGEXP_EXTRACT(delivery, r"RELAIS_([0-9]+J)") as string) as relayDay
FROM TABLE
我希望能够只提取天数,而不管数字后面的字符串是 "J" 还是 "DAY"。
示例数据:
RETRAIT_2H|LIVRAISON_5J|RELAIS_5J | 5J
LIVRAISON_21J|RELAIS_19J | 19J
LIVRAISON_21J|RELAIS_19J | 19J
RETRAIT_2H|LIVRAISON_3J|RELAIS_3J | 3J
您可以使用
REGEXP_EXTRACT(delivery, r"(?:.*\D)?(\d+)\s*(?:J|DAY)")
详情
(?:.*\D)?
- 一个可选的非捕获组,它匹配除换行符之外的 0+ 个字符 chsrs 尽可能多,然后是一个非数字字符(需要此模式才能将索引推进到该位置就在最后一个数字序列之前,而不是最后一个数字)
(\d+)
- 第 1 组(REGEXP_EXTRACT
returns):一位或多位数字
\s*
- 0+ 个空格
(?:J|DAY)
- J
或 DAY
个子字符串。
我正在尝试仅从 BigQuery 的特定列中提取数字。 相关字段的格式为:value = "Livraison_21J|Relais_19J" or "RELAIS_15 DAY" 我正在尝试为关键字 "Relais" 前面的每个值提取天数。 天数范围从 1 到 100。
我用这个来做到这一点:
SELECT CAST(REGEXP_EXTRACT(delivery, r"RELAIS_([0-9]+J)") as string) as relayDay
FROM TABLE
我希望能够只提取天数,而不管数字后面的字符串是 "J" 还是 "DAY"。
示例数据:
RETRAIT_2H|LIVRAISON_5J|RELAIS_5J | 5J
LIVRAISON_21J|RELAIS_19J | 19J
LIVRAISON_21J|RELAIS_19J | 19J
RETRAIT_2H|LIVRAISON_3J|RELAIS_3J | 3J
您可以使用
REGEXP_EXTRACT(delivery, r"(?:.*\D)?(\d+)\s*(?:J|DAY)")
详情
(?:.*\D)?
- 一个可选的非捕获组,它匹配除换行符之外的 0+ 个字符 chsrs 尽可能多,然后是一个非数字字符(需要此模式才能将索引推进到该位置就在最后一个数字序列之前,而不是最后一个数字)(\d+)
- 第 1 组(REGEXP_EXTRACT
returns):一位或多位数字\s*
- 0+ 个空格(?:J|DAY)
-J
或DAY
个子字符串。