You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询:如何筛选JSON字段中level值≤指定值的行

用MySQL JSON函数筛选JSON字段中指定键值的行

没问题,这事儿用MySQL自带的JSON函数就能完美解决,完全不需要用LIKE加通配符这种不够严谨的方式。

核心思路

MySQL从5.7版本开始就原生支持JSON类型和一系列JSON处理函数,我们可以直接提取JSON字段里的level值,然后进行数值比较。

具体实现方法

这里有两种常用的写法,效果是一样的,你可以选自己看着顺眼的:

写法1:使用JSON_EXTRACT()函数

这个是标准的JSON提取函数,语法清晰,适合刚接触JSON函数的朋友:

SELECT *
FROM your_table_name
WHERE JSON_EXTRACT(colm, '$.level') <= 8;

写法2:使用->>运算符(简化写法)

这是MySQL提供的语法糖,用起来更简洁,本质和上面的函数是一样的:

SELECT *
FROM your_table_name
WHERE colm->>'$.level' <= 8;

补充说明

  • $.level是JSON路径表达式,$代表整个JSON对象,.level就是取这个对象里的level键对应的值。
  • ->>运算符会把提取出来的JSON值自动转成字符串类型,不过MySQL在做数值比较的时候会自动做类型转换,所以直接和数字8比较完全没问题;如果你想更严谨,也可以用CAST()转成整数:
SELECT *
FROM your_table_name
WHERE CAST(colm->>'$.level' AS UNSIGNED) <= 8;

扩展:动态传入筛选值

比如你想把筛选值做成变量,在应用里动态传递,可以这么写(以MySQL的用户变量为例):

SET @max_level = 8;
SELECT *
FROM your_table_name
WHERE colm->>'$.level' <= @max_level;

这样执行的话,就能精准得到你想要的level<=8的那两行数据啦~

内容的提问来源于stack exchange,提问作者APixel Visuals

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:33:15