在 Mysql 中的 JSON 数组中检索 Json 数据的值
Retrieving Values of Json Data Inside JSON Array in Mysql
我有 JSON
列,其中包含 JSON 数组。我的方案是获取 url
值为的所有记录
'"example.com/user1"'
存在。我在为此操作编写查询时遇到问题。
Record1
[
{
"id": "1",
"firstname": "user1",
"url": "example.com/user1"
},
{
"id": "2",
"firstname": "user2",
"url": "example.com/user2"
}
]
Record2
[
{
"id": "1",
"firstname": "user3",
"url": "example.com/user3"
},
{
"id": "2",
"firstname": "user2",
"url": "example.com/user2"
}
]
......
......
......
Record10
[
{
"id": "1",
"firstname": "user10",
"url": "example.com/user10"
},
{
"id": "2",
"firstname": "user1",
"url": "example.com/user1"
}
]
我运行的查询是:
Select internal_id from users_dummy where JSON_EXTRACT(user_friends, '$[0].url') = "example.com/user1" or JSON_EXTRACT(user_friends, '$[1].url') = "example.com/user1";
所以 o/p 是:
Record1, Record10
这是跨记录搜索值的正确方法吗?
提前致谢。
您可以这样使用 JSON_SEARCH
:
SELECT *
FROM users_dummy
WHERE JSON_SEARCH(user_friends, 'one', 'example.com/user1', NULL, '$[*].url') IS NOT NULL
如果您使用的是对象而不是数组,您可以使用以下解决方案:
SELECT *
FROM users_dummy
WHERE JSON_SEARCH(user_friends, 'one', 'example.com/user1', NULL, '$.*.url') IS NOT NULL
我有 JSON
列,其中包含 JSON 数组。我的方案是获取 url
值为的所有记录
'"example.com/user1"'
存在。我在为此操作编写查询时遇到问题。
Record1
[
{
"id": "1",
"firstname": "user1",
"url": "example.com/user1"
},
{
"id": "2",
"firstname": "user2",
"url": "example.com/user2"
}
]
Record2
[
{
"id": "1",
"firstname": "user3",
"url": "example.com/user3"
},
{
"id": "2",
"firstname": "user2",
"url": "example.com/user2"
}
]
......
......
......
Record10
[
{
"id": "1",
"firstname": "user10",
"url": "example.com/user10"
},
{
"id": "2",
"firstname": "user1",
"url": "example.com/user1"
}
]
我运行的查询是:
Select internal_id from users_dummy where JSON_EXTRACT(user_friends, '$[0].url') = "example.com/user1" or JSON_EXTRACT(user_friends, '$[1].url') = "example.com/user1";
所以 o/p 是:
Record1, Record10
这是跨记录搜索值的正确方法吗? 提前致谢。
您可以这样使用 JSON_SEARCH
:
SELECT *
FROM users_dummy
WHERE JSON_SEARCH(user_friends, 'one', 'example.com/user1', NULL, '$[*].url') IS NOT NULL
如果您使用的是对象而不是数组,您可以使用以下解决方案:
SELECT *
FROM users_dummy
WHERE JSON_SEARCH(user_friends, 'one', 'example.com/user1', NULL, '$.*.url') IS NOT NULL