我使用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 捕获字符串,然后用其他方式对整数进行比较?
答案 0 :(得分: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}
。