【问题标题】:Regex digit range in SQL querySQL查询中的正则表达式数字范围
【发布时间】:2019-10-15 06:45:15
【问题描述】:

我需要使用 REGEXP 函数创建 SQl 查询。

我需要在(例如)中找到序列化字段:

a:2:{s:5:"rooms";i:2;s:5:"area";i:4;}
a:2:{s:5:"rooms";i:2;s:5:"area";i:7;}
a:2:{s:5:"rooms";i:2;s:5:"area";i:18;}

“面积”值可以是:

1-5 or 5-10 or 10-20 or 20-50 or 50-100

我尝试将 REGEXP .*"area";i:[1-5].* 用于第一个条件 (1-5),但它显​​示错误的数据。其他条件也无法弥补。

【问题讨论】:

  • 当您说“值可以是:1-5”时,您是指15 之间的一个数字,还是字面意义上的值1-5
  • 是的,1-5 是从 1 到 5。
  • 能否提供一个测试用例。输入输出@AlexFreeman
  • @AlexFreeman 。 . .为什么要以这种类似 JSON 的方式存储值,然后使用字符串函数来解析它们?

标签: php sql regex


【解决方案1】:

我认为这个正则表达式应该涵盖您的期望值:

("area";i:(?:(?!0)\d{1,2}|100)\b)

这里是 regex101 链接:Link Here

【讨论】:

  • 谢谢,但我需要 5 个条件的决定。
  • 您好,我想您上面提到的所有这些条件都包含在此正则表达式中。如果我理解正确,这些是您的要求。值不应以 0 开头。这将由 (?!0) 验证,如果发生,您必须检查 1-100 之间的值,并且不超过此值。
猜你喜欢
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多