首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索JSON数据关联数组MySQL5.5

问如何检索JSON数据关联数组MySQL5.5
EN

Stack Overflow用户
提问于 2019-09-02 18:13:39
回答 2查看 400关注 0票数 0

我在MySQL 5.5中将JSON关联数组数据存储在表的列中。我想在JSON中用key和value在JSON结构中搜索一个特定的数组键:

代码语言:javascript
复制
   {
   "Interface_1":{
      "Caption":"[00000004] Intel(R) Dual Band Wireless-AC 3160",
      "MACAddress":"D0:7E:35:D3:C1:52",
      "DHCPServer":"192.168.1.1",
      "IPAddress":"192.168.1.101",
      "DNSServerSearchOrder":[
         "8.8.8.8",
         "9.9.9.9"
      ],
      "DefaultIPGateway":"192.168.1.1",
      "IPSubnet":"255.255.255.0"
   },
   "Interface_2":{
      "Caption":"[00000011] VMware Virtual Ethernet Adapter for VMnet1",
      "MACAddress":"00:50:56:C0:00:01",
      "IPAddress":[
         "192.168.29.1",
         "fe80::d9f4:2bfa:59f:b9ba"
      ],
      "IPSubnet":[
         "255.255.255.0",
         "64"
      ]
   },
   "Interface_3":{
      "Caption":"[00000013] VMware Virtual Ethernet Adapter for VMnet8",
      "MACAddress":"00:50:56:C0:00:08",
      "IPAddress":[
         "192.168.71.1",
         "fe80::acec:db96:af3a:4680"
      ],
      "IPSubnet":[
         "255.255.255.0",
         "64"
      ]
   }
}

因此,对于按键值搜索,我有这样的查询:

代码语言:javascript
复制
SELECT * FROM `extable` 
WHERE network RLIKE '"MACAddress":"[[:<:]]00:50:56:C0:00:08[[:>:]]"'

它工作得很好,但我的问题是我不能选择Interface_1并在上面搜索MACAddress。我想选择Interface_1并在上面搜索MACAddress。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-02 20:16:45

您可以在正则表达式中包含Interface_1对象键,从该点开始搜索,但不超过任何} (对象结束)字符:

代码语言:javascript
复制
SELECT * FROM `extable` 
WHERE network RLIKE '"Interface_1":{[^}]*"MACAddress":"[[:<:]]00:50:56:C0:00:08[[:>:]]"'

Demo on dbfiddle

票数 1
EN

Stack Overflow用户

发布于 2019-09-02 19:37:56

您可以使用MySql内置的json函数进行解析/搜索。

代码语言:javascript
复制
SELECT * FROM `extable` WHERE JSON_CONTAINS(network, "00:50:56:C0:00:08", '$.*.MACAddress')

编辑:我刚刚意识到这只在>=MySQL 5.7中支持

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57755142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档