簡體   English   中英

MySQL 5.7 JSON_EXTRACT 用法在 JSON 數組中具有相同的鍵名

[英]MySQL 5.7 JSON_EXTRACT usage with same key names in JSON array

我在 MySQL 中存儲了以下 JSON 對象:

[
  {
    "key": "user_agent",
    "value": "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; rv:11.0) like Gecko"
  },
  {
    "key": "language",
    "value": "fr-FR"
  },
  {
    "key": "color_depth",
    "value": 24
  },
  {
    "key": "js_fonts",
    "value": [
      "Arial",
      "Arial Black"
    ]
  }
]

你能幫助從那個 JSON 中選擇第二個或第一個值嗎? 可選地,其中“key”是例如“user_agent”。 我想這會更好,因為無法保證價值順序。 我真的無法弄清楚,如何使用 JSON 路徑,如: https : //dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html

為方便起見,這里是創建示例表的 SQL 語句:

CREATE TABLE `test` (
  `components` json NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `test` VALUES ('[{\"key\": \"user_agent\", \"value\": \"Mozilla/5.0 (Windows NT 6.1; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E; r1.0) like Gecko\"}, {\"key\": \"language\", \"value\": \"fr-FR\"}, {\"key\": \"color_depth\", \"value\": 24}, {\"key\": \"js_fonts\", \"value\": [\"Arial\", \"Arial Black\"]}]');

JSON_EXTRACT(components, '$[1]') 提取第二個數組:

{"key": "language", "value": "fr-FR"} 

但這不完全是我想要的。

好吧..比我想象的要容易。 至少提取它:

SELECT JSON_EXTRACT(components, '$[1].value') FROM test;

返回我想要的"fr-FR" 或者使用更短的語法不加引號的結果:

SELECT components->>'$[1].value' FROM test;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM