Sql 与有效日期Presto匹配的正则表达式
对于下表,我想从Sql 与有效日期Presto匹配的正则表达式,sql,regex,date,presto,trino,Sql,Regex,Date,Presto,Trino,对于下表,我想从附加信息字符串中提取可用自日期。我知道Presto中有一个regexp\u extract\u all(string,pattern)函数,但不太确定如何从字符串中提取日期 供参考: 日期总是采用相同的格式 “附加信息”列中只能有一个日期 附加信息列中没有日期的行在日期列中为空 桌子 期望输出表 product_id available_date 325245 01.01.2020 635255 06.11.2020 422632
附加信息
字符串中提取可用自日期
。我知道Presto中有一个regexp\u extract\u all(string,pattern)函数,但不太确定如何从字符串中提取日期
供参考:
- 日期总是采用相同的格式
- “附加信息”列中只能有一个日期
列中没有日期的行在日期列中为空附加信息
product_id available_date
325245 01.01.2020
635255 06.11.2020
422632
如果您的日期总是采用这种格式,那么一个非常简单的解决方案可能是:
SELECT
product_id
, regexp_extract(additional_info, '(\d\d.\d\d.\d\d\d\d)')
FROM table
它将返回与您的捕获组匹配的第一个子字符串
(在rackets之间)
regexp中的点表示任何字符。要在regexp中逐字匹配点,需要使用反斜杠将其屏蔽。
SELECT
product_id,
regexp_extract(additional_info, '(\d\d\.\d\d\.\d{4})')
FROM table
如果要允许使用不同的分隔符,而不仅仅是点,请使用字符类[]
。例如,点或破折号:
SELECT
product_id,
regexp_extract(additional_info, '(\d\d[.-]\d\d[.-]\d{4})')
FROM table
(1)
附加信息
看起来像字符串,而不是数组。(2) 日期是否总是采用相同的格式?(3) 如果有多个日期或没有日期怎么办?我已经编辑了我的帖子。日期始终采用相同的格式,如果只有一个日期或没有日期,则日期列为空
SELECT
product_id,
regexp_extract(additional_info, '(\d\d[.-]\d\d[.-]\d{4})')
FROM table