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. 枚舉值之間使用管道符號|來實現或的選擇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM