2

我正在使用 REGEXP 来匹配列中大量文本中的特定字符串LONGTEXT。例如:

Text text text text text
 text text text text text
 text text SOLD: 75/101 text
 text text text text text

所以我的查询看起来像这样:

SELECT * FROM `test` WHERE `file` REGEXP
'SOLD:[ ]{1}[0-9]{1,2,3}/[0-9]{1,2,3}'

这将正确匹配SOLD: 75/101字符串。

但是有可能对分子进行比较吗?例如,找到所有SOLD: >=75/101

比较数字将是用户通过 $_POST 输入的数字。我知道 REGEXP 并不是真的用于比较数字,但是有没有办法用 regexp捕获字符串,然后以其他方式对整数进行比较?

4

1 回答 1

3

如果您只需要查看分子,如您的评论中所述,那么

SELECT * FROM mytable WHERE mycolumn REGEXP 
"SOLD: ([1-9][0-9]{2,}|[8-9][0-9]|7[5-9])/101";

应该管用。

顺便说一句,[0-9]{1,2,3}在大多数正则表达式中是一个语法错误(我不知道 MySQL 是如何处理它的);指定范围的正确方法是[0-9]{1,3}.

于 2012-09-23T21:22:49.040 回答