2017-01-24 5 views
0

のMySQL 5.7 JSON_EXTRACT用法

[ 
    { 
    "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」です。私は値の順序が保証されていないので、それが良いと思います。 、

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(コンポーネント:ここではサンプルテーブルを作成するSQL文で、それは簡単にするため https://dev.mysql.com/doc/refman/5.7/en/json-path-syntax.html

:私は本当に理解できない は、JSONのパスを使用する方法で説明したように'$ [1]')は2番目の配列を抽出します:

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

しかし、それは私が欲しいものではありません。

答えて

0

私は思ったよりも簡単でした。少なくともそれを抽出するには:

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

私が欲しいものを返します。または、短い構文の引用符で囲まれていない結果:

SELECTコンポーネント - >> '$ [0] .value' FROM test;

関連する問題