我正在寻找可以在 MySql 查询中使用的正则表达式
我想要归档的是一个查询,该查询过滤所有包含值为“xx%防火”字符串的行,而 xx 是一个动态值,比方说 22 ,但我不只是想要所有行22,但所有行都为 22 且更高。这有可能吗?
我可以在第二步中使用 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;
最佳答案
在 MySQL 8 之前的版本中,您可以使用
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 位数字 -
|
- 或 -
[1-9][0-9]{2,}
-1
中的一个数字至9
然后是两位或更多数字
-
-
([.][0-9]+)?
- 可选.
和 1+ 位数字 -
% to Fire Resistance
- 一个子字符串 -
[[:>:]]
- 右侧单词边界
关于php - mysql regex - 过滤后跟特定字符串的大于 XX 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59957308/