在MySql json类型中获取部分数组值

v9tzhpje  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(45)

当[1,2,3,4,5]存储在MySql中的Json Type中,列为'jscol',表为'Jtest',如何获得大于2的部分值?我找不到正确的查询。
我认为mysql 8中的一些json函数组合可以解决这个问题。

falq053o

falq053o1#

最好能提供样品表。
对于您的情况,您可以使用以下查询

--Create TABLE Jtest
CREATE TABLE Jtest (
    id INT AUTO_INCREMENT PRIMARY KEY,
    jscol JSON NOT NULL
);

--Insert dummy data
INSERT INTO Jtest(jscol) VALUES ('[1,2,3,4,5]');

-- Query to get values above 2
SELECT value
FROM Jtest,
     JSON_TABLE(jscol, '$[*]' 
                COLUMNS(
                    value INT PATH '$'
                )
     ) AS jt
WHERE jt.value > 2;

字符串
此查询执行以下操作:

  • JSON_TABLE()函数用于解析存储在jscol列中的JSON数组。
  • 路径'$[*]'用于指定我们要遍历JSON数组中的每个元素。
  • 在COLUMNS子句中,我们定义了一个名为value的列,它从JSON数组中提取每个值。
  • 最后,我们使用WHERE子句过滤结果,只获取大于2的值。
  • 当你运行上面的查询时,它将从JSON数组[1,2,3,4,5]中返回值3、4和5。

相关问题