在MySQL中使用reg表达式将字符串的一部分复制到其他字段

时间:2013-11-09 17:04:20

标签: mysql regex

我的表格中有两个字段:start_datetitlestart_date为NULL。 title包含如下字符串:'日期为2012年12月12日的处理,位于... '. I want to copy only the date into start_date (from title`字段。)

什么查询会这样做? 谢谢你非常匹配!

2 个答案:

答案 0 :(得分:0)

你做不到。 Mysql对regexp的支持仅用于where-part。

你必须将它提取到其他东西(java,perl,ruby)并在那里操作它,或者你可以尝试使用locate, substring and other string functions(但它们都不是regexp)

答案 1 :(得分:0)

MySQL对正则表达式的支持非常有限,但是如果你的标题栏的格式几乎是固定的,并且日期总是后跟',at ...',你可以将STR_TO_DATE与两个结合使用SUBSTRING_INDEX

UPDATE yourtable
SET start_date = STR_TO_DATE(
      SUBSTRING_INDEX(SUBSTRING_INDEX(title, ', at', 1), ' ', -1), '%d/%m/%Y')

第一个SUBSTRING_INDEX将返回第一个',at'子字符串之前的所有内容,第二个SUBSTRING_INDEX将返回最后一个空格数后的所有内容。

请参阅小提琴here

我以日/月/年的格式考虑日期,如果是月/日/年,则只使用'%m /%d /%Y'