MySQL使用正则表达式比较字段中的数字

今天遇到一个问题,需要对表中的一个类json字段的内容进行筛选,而筛选的条件是值要大于某个值。因为值的位数并不确定,考虑使用正则表达式进行筛选。

字段格式

类json的key-value字段,示例如下:

create table t1 (a varchar(50));

insert into t1  values ('"xx":"30","yy":"9.8"}');
insert into t1  values ('"xx":"20","yy":"9.9"}');
insert into t1  values ('"xx":"60","yy":"9.5"}');
insert into t1  values ('"xx":"90","yy":"10.0"}');

筛选条件

xx后面的值要求大于20,yy后面的值要求大于9.6

最后的筛选语句

select * from t1 where a regexp '^.*"xx":"((2[1-9])|([3-9][0-9])|([1-9][0-9]{2,}))","yy":"((9\.[7-9])|(10\.)).*}$';

说明

  1. 数字比较采用枚举的方式实现,比如xx,先比较以20开头的2位数,然后是3-9开头的两位数,最后是多位数
  2. 枚举值之间使用管道符号|来实现或的选择。

posted on 2016-09-09 16:35  camash  阅读(7413)  评论(0)    收藏  举报

编辑推荐:
· 运维排查 | SaltStack 远程命令执行中文乱码问题
· Java线程池详解:高效并发编程的核心利器
· 从“看懂世界”到“改造世界”:AI发展的四个阶段你了解了吗?
· 协程本质是函数加状态机——零基础深入浅出 C++20 协程
· 编码之道,道心破碎。
阅读排行:
· 基于.net6的一款开源的低代码、权限、工作流、动态接口平台
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
· Claude Code 初体验 - Windows
· 基于 C# 编写的轻量级工控网关和 SCADA 组态软件
· 纯C#软实现openGL(V0.1),黑盒变白盒

导航

< 2025年6月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12

统计

点击右上角即可分享
微信分享提示