问题描述
我在 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