【问题标题】:Extract date from generic string database H2从通用字符串数据库 H2 中提取日期
【发布时间】:2021-03-26 07:55:06
【问题描述】:

我在 H2 数据库的表的列中有一些字符串。例如:

24058031_1607945815000_bucket/MSAVI/32SMJ4/S2_**20201214**_065_32SMJ4_A_MSAVI.tif
bucket/20201214/ET0_**20201214**.tif_4937923_1607945815000

我想结合一些 h2 函数从字符串中提取粗体日期(字符串可以是通用字符串,其内部日期格式为 yyyyMMdd); 我想像这样的查询:

Select extractDateFromString(column) from table;

但问题是构建一个extractDateFromString 函数来实现这一点。

欢迎提出任何建议。谢谢!洛伦佐

【问题讨论】:

  • 如果您的正则表达式支持lookbehinds,(?<!\d)\d{8}(?=\D)(?=[^\/]+$) 会起作用。 regex101.com/r/hucx8f/1
  • 谢谢,但实际上我正在寻找正则表达式和 H2 函数来提取此正则表达式的所有匹配项作为子字符串,或者如果不存在则实现此函数的方法(可能已经编写了一些现有的 H2 函数)

标签: regex date h2


【解决方案1】:

您需要使用regexp_replace() 删除所有不需要的内容:

Select REGEXP_REPLACE(column, '^.*\D(\d{8})(?:\D|$)[^\/]*$', '$1') from table;

https://regex101.com/r/B8hct2/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2016-06-24
    相关资源
    最近更新 更多