Mysql SQL“替换除此之外的所有内容”,其中 xxx

Est*_*dán 5 regex mysql sql date view

我的一个项目有一个糟糕的数据库,他们使用了文本字段来存储日期。

因此,我需要构建一个在一列中仅包含年份的视图。问题是我有任何标准格式的日期,例如:

  • 2012年1月1日
  • 2012年1月1日
  • 01 01 2012
  • 2012年1月1日
  • 01/2012
  • 1/2012
  • 2012年
  • 2012年01月

有没有什么方法可以构建 SQL (MySQL) 来仅获取这 4 年的数字来构建视图?

非常感谢你的帮助!

Ste*_*eve 4

这实际上取决于整个数据结构,您可以使用 REGEX 或字符串函数

例如,对于您的示例数据,右侧的最后 4 位数字是年份,因此使用

SELECT RIGHT(fieldname, 4) FROM table
Run Code Online (Sandbox Code Playgroud)

会工作。如果该模式不起作用,那么您要么必须使用 concat 并开始拆分它们,要么编写 REGEX 语句。

如果 RIGHT 有效,那么您可以执行 INSERT SELECT

INSERT INTO table (yearcolumn)
SELECT RIGHT(fieldname, 4) FROM table
Run Code Online (Sandbox Code Playgroud)