对于下表,我想从additional_info
字符串中提取available from date
。我知道Presto中有一个regexp_extract_all(字符串,模式(函数,但不太确定如何从字符串中提取日期。
FYI:
- 日期总是采用相同的格式
additional_info
列中只能有一个日期additional_info
列中没有日期的行在日期列中为null
表格
product_id additional_info
325245 New, contact for more information, available from 01.01.2020
635255 Used, available from 06.11.2020
422632 New, contact for more information
期望输出表
product_id available_date
325245 01.01.2020
635255 06.11.2020
422632
如果你的日期总是这种格式,一个非常简单的解决方案可能是:
SELECT
product_id
, regexp_extract(additional_info, '(dd.dd.dddd)')
FROM table
它将返回捕获组(betweenbrackets)
匹配的第一个子字符串。
正则表达式中的点表示任何字符。要在regexp中真正匹配点,您需要用反斜杠.
屏蔽它
SELECT
product_id,
regexp_extract(additional_info, '(dd.dd.d{4})')
FROM table
如果要允许不同的分隔符,而不仅仅是点,请使用字符类[]
。例如,点或短划线:
SELECT
product_id,
regexp_extract(additional_info, '(dd[.-]dd[.-]d{4})')
FROM table