我正在搜索可在MySql查询中使用的RegEx
我要存档的查询将过滤所有包含“ xx%to Fire Resistance”值的字符串的行,而xx是动态值,比如22,但是我不希望所有的行都具有22但所有行都为22 AND higher。这可能吗?
我可以使用php在第二步中对其进行过滤,但是最初的结果将是可以实用的方法。
我目前拥有的(并且不会起作用,因为它只是过滤给定字符串之前的数字)
SELECT * FROM items WHERE `mods` REGEXP '\b(\d+(?:\.\d+)?)% to Fire Resistance\b'
理论上我需要的东西
SELECT * FROM items WHERE `mods` REGEXP '\b(\d+(?:\.\d+)?)% to Fire Resistance\b' > 22
一个示例“ mods”字段内容
Some more text;+170 to Accuracy Rating;+25% to Fire Resistance;+4 to Armour;+6 to Evasion Rating;+43 to maximum Life;+39% to Lightning Resistance;Some more text;Some more text;
在8之前的MySQL版本中,您可以使用
REGEXP '[[:<:]](2[2-9]|[3-9][0-9]|[1-9][0-9]{2,})([.][0-9]+)?% to Fire Resistance[[:>:]]'
详细信息
[[:<:]]
-左侧单词边界(2[2-9]|[3-9][0-9]|[1-9][0-9]{2,})
-匹配的组2[2-9]
-2
后跟一个从2
到9
的数字|
-或[3-9][0-9]
-从3
到9
的一位,然后是任意一位]|
-或[1-9][0-9]{2,}
-从1
到9
的数字,然后是两个或多个数字]([.][0-9]+)?
-可选的.
和1个以上的数字]% to Fire Resistance
-子字符串[[:>:]]
-右侧单词边界