【发布时间】:2020-03-05 09:03:36
【问题描述】:
我正在尝试仅从 BigQuery 中的特定列中提取数字。 相关字段的格式如下: value = "Livraison_21J|Relais_19J" 或 "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
【问题讨论】:
-
请提供应匹配的样本数据
-
和第一个数字一样,你的意思是
19吗?第二个数字 >15后面没有大写 J。这意味着你的模式是错误的。 -
试试
SPLIT(REGEXP_REPLACE(delivery, r'[^0-9|]+',''), '|') -
添加样本数据
-
样本数据中的
|是什么意思?预期结果?所以你想要一个值,在最后一个J或DAY之前?那就试试REGEXP_EXTRACT(delivery, r"(?:.*\D)?(\d+)\s*(?:J|DAY)")
标签: sql regex google-bigquery extract