Mysql 数据库中嵌套 JSON 字符串中数组的条件 select 值

Conditionally select values from an array in a nested JSON string in a Mysql database

我正在努力有条件地从 Mysql table 中的嵌套 JSON 字符串中提取值。

{"users": [{"userId": "10000001", "userToken": "11000000000001", "userTokenValidity": 1}, {"userId": "10000002", "userToken": "12000000000001", "userTokenValidity": 1}, {"userId": "10000003", "userToken": "13000000000001", "userTokenValidity": 0}]}

我想 select 一个 userToken,但前提是 userTokenValidity 为 1。所以在这个例子中只有“11000000000001”和“12000000000001”应该被 selected。

这将提取整个数组...我应该如何过滤结果?

SELECT t.my_column->>"$.users" FROM my_table t;
SELECT CAST(value AS CHAR) output
FROM test
CROSS JOIN JSON_TABLE(test.data, '$.users[*]' COLUMNS (value JSON PATH '$')) jsontable
WHERE value->>'$.userTokenValidity' = 1

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=4876ec22a9df4f6d2e75a476a02a2615