MySQL JSON_EXTRACT()查询返回null
我在MySQL JSON_EXTRACT()查询返回null,mysql,json,extract,Mysql,Json,Extract,我在MYSQL数据库中有以下JSON文件: [ { "order" : 0, "value" : 0.168257 }, { "order" : 0.031250, "value" : 0.002387 }, { "order" : 0.062500, "value" : 0.002367 }, { "order" : 0.093750, "value" : 0.002365 }, { "order" : 0.125000,
MYSQL
数据库中有以下JSON文件
:
[
{
"order" : 0,
"value" : 0.168257
},
{
"order" : 0.031250,
"value" : 0.002387
},
{
"order" : 0.062500,
"value" : 0.002367
},
{
"order" : 0.093750,
"value" : 0.002365
},
{
"order" : 0.125000,
"value" : 0.002369
},
{
"order" : 0.156250,
"value" : 0.002384
},
{
"order" : 0.187500,
"value" : 0.002403
}
]
我想查询并得到“order”=0.156250的结果
我使用以下查询:
JSON_EXTRACT(jsonColumn,'$.order') ... WHERE JSON_EXTRACT(jsonColumn,'$.order') = 0.156250
它不起作用。
我只能通过执行以下操作来选择列:
Select JSON_EXTRACT(jsonColumn,'$[5].order')
有人能告诉我如何在不给select语句指定索引的情况下选择列吗
谢谢 您需要先将其转换为json\u表
,然后再进行筛选
select *
from
test t1
cross join
json_table(t1.jsonColumn,
"$[*]"
columns(
`Order` numeric(9,6) path "$.order",
`Value` numeric(9,6) path "$.value"
)
) t2
where t2.Order = 0.156250
看
对于mySQL
版本5.7
select
*
from test t1
cross join (
select 1 as col1 union
select 2 union
select 3 union
select 4 union
select 5 union
select 6
) t2
where json_extract(t1.jsonColumn, concat('$[', t2.col1, '].order')) = 0.156250;
请参阅哪个版本的MySQL?值是数字还是字符串?MySQL版本5.7或8.0?MySQL版本8.0