我正在使用 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 捕获字符串,然后以其他方式对整数进行比较?
最佳答案
如果您只需查看分子,如评论中所述,那么
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}
。
关于MySQL REGEXP 整数比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555531/