php - mysql regex - 过滤后跟特定字符串的大于 XX 的数字

标签 php mysql sql regex regular-language

我正在寻找可以在 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;

https://regex101.com/r/ZhIMzc/2

最佳答案

在 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/

相关文章:

mysql - 在 Laravel 子查询中使用 count 编写 where 子句

php - mysql_query() 函数的 mysql 查询错误

如果主 ID 的给定值为 0,则 LEFT JOIN 中的 MySQL 查询速度非常慢

sql - 左外连接表排序

php - 如何在 Symfony 4 中使用自定义集合

php - 使用方法 post 重定向

javascript - 用户个人资料页面 - PHP

mysql创建表id自增报错

mysql - 在 SQL 中将行转换为列

php - netbeans 不在断点处停止