在 STR_TO_DATE 内运行 MySQL REGEXP_SUBSTR 以从文本中提取日期时遇到问题

问题描述

我在 STR_TO_DATE 内运行 MysqL REGEXP_SUBSTR 以从文本字段中提取日期时遇到问题。

如果可以运行以下查询,并使用 REGEXP_SUBSTR 正确提取日期字符串。

SELECT REGEXP_SUBSTR('12/9/97 - Ependymoma!','[0-9]{1,2}/[0-9]{1,2}');
# '12/9/97'

如果我在 STR_TO_DATE 中硬编码日期字符串,我可以正确地将日期字符串转换为 DATE。

SELECT STR_TO_DATE('12/9/97','%m/%d/%y');
# '1997-12-09'

但是,如果我在 STR_TO_DATE 内调用 REGEXP_SUBSTR,它将返回 NULL。

SELECT STR_TO_DATE(REGEXP_SUBSTR('12/9/97 - Ependymoma!',2}'),'%m/%d/%y');
# NULL

我一直在努力解决这个问题。任何方向将不胜感激。 谢谢。

解决方法

感谢大家的帮助!一些评论者对我的代码没有问题,但是我无法在我最近安装的 MySQL 版本中使用它。我必须完成这项工作,所以我切换到 PostgreSQL 并且没有问题。

,

先尝试将日期选入局部变量

SELECT @tmp := REGEXP_SUBSTR('12/9/97 - Ependymoma!','[0-9]{1,2}/[0-9]{1,2}')
SELECT STR_TO_DATE(@tmp,'%m/%d/%y');

也作为 answer 发布,因为我无法让 comment 显示两行,所以很乱

顺便说一句:您的原始组合语句适用于 10.4.8-MariaDB

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...