MySQL正则表达式:如何使用\d匹配字符串中的数字?

5

我有一个名为release_date的列,它以字符串格式存储日期(不是DATETIME格式。因为它们有时可能是其他字符串字面值)。

我想基于给定月份和年份找到所有记录,但与任何日期都可以。

我尝试了以下方法,但对我没有起作用:

> Post.find(:all, :conditions => ["release_date RLIKE ? AND deleted_at is null", "^\d{2}-01-2016"])

当我尝试使用直接日期进行相同操作时,它可以正常工作。
> Post.find(:all, :conditions => ["release_date RLIKE ? AND deleted_at is null", "09-01-2016"])

注意:我正在使用 Ruby On Rails 2MySQL

非常感谢您的帮助!


我建议尽快更新你的Rails!至少升级到Rails 4。 - siegy22
@RaVeN - 我们正在处理这个问题。但我想我的问题更与MySQL有关。如果您有任何实际问题的想法,那将帮助我很多。不过,感谢您的建议 :) - Venkat Ch
我认为你需要使用mysql regexp函数将你传递的字符串标记为正则表达式:http://dev.mysql.com/doc/refman/5.7/en/regexp.html - siegy22
谢谢@chris85。它起作用了。我通常使用\d来匹配数字。但我想知道为什么在这种情况下不起作用。如果您有任何更多信息并将其作为答案呈现,那将会很棒。我很乐意接受。 - Venkat Ch
请参见 http://dev.mysql.com/doc/refman/5.7/en/regexp.html。 - Wiktor Stribiżew
1个回答

12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接