我正在尝试搜索系列A0001、A0002、A1234、A2351等中的最大数字。。。问题是我在其中搜索的列表也有字符串,如AG108939、E092357、AL399、22-30597等
所以基本上,我想要数据库中最高的A值。我使用了以下查询:
@max\u draw=Drawing.where(“Drawing\u number LIKE?”,“A%”)
在AG309这样的数字出现之前,它一直在工作,因为它以A开头,但格式与我要找的不同
我假设这对于正则表达式应该是非常直接的,但是我是新手,不知道如何正确地用正则表达式编写这个查询。以下是我尝试过的一些只返回零的方法:
@max\u draw=Drawing.where(“Drawing\u number LIKE?”,/A\d+/)
@最大绘图=绘图。其中(“绘图编号如?”,“/A\d+/”)
@最大图纸=图纸。其中(“图纸编号如?”,“A[0-9]”)
在带有Postgres数据库的Rails 4+上,正则表达式查询的一般形式是:
模型。其中(“列~*?”,“regex”)
至于正则表达式,它可以是一个通用的“^a\d+$”或更具体的“^a\d{4}$”
细分:
^-字符串开始锚定
A-字面“A”
\d+-一个或多个数字(0-9)
\d{4}-正好四位数字
$-管柱端锚
基本上,正则表达式读取“字符串应以A开头,后跟四位数字,然后字符串应结束”。
最后一行是:
@max\u draw=Drawing.where(“Drawing\u number~*?”,“^A\d{4}$”)
进一步阅读RubyDoc上的ruby正则表达式或更易访问的Perl变体(由Sublime text使用)