Home > database >  Query json fields, return have attributes specified json data
Query json fields, return have attributes specified json data

Time:09-27

 

mysql> The create table me (id int auto_increment primary key, m json, c json);
Query OK, 0 rows affected (0.04 SEC)

mysql> Insert into the me (m, c) values (' {" xm ":" LDF ", "xb" : "nan", "mz" : "han", "hf" : true, "sg" : 168} ', '[" xm ", "mz"] ");
Query OK, 1 row affected (0.00 SEC)

mysql> Select * from me;
+ - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- +
| | | id m c |
+ - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- +
| 1 | {" hf ": true," mz ":" han ", "sg" : 168, "xb" : "nan", "xm" : "LDF"} | [" xm ", "mz"] |
+ - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- +
1 row in the set (0.00 SEC)


m field contains multiple key-value pairs, return to the c field of key-value pairs,
If hope to receive the data below, there should be how to write the query, note that the value of the c is uncertain




+ - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- +
| | id | MMM | CCC
+ - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- +
| 1 | {" mz ":" han ", "xm" : "LDF"} | [" xm ", "mz"] |
+ - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- -- -- -- -- -- +

CodePudding user response:

You see online MySQL json

CodePudding user response:

The
reference
online MySQL under you see json


Didn't see coarse to ah ~ ~ ~

CodePudding user response:

Write their own functions, such as
 CREATE FUNCTION f (m json, c json) 
RETURNS a json
The BEGIN
SELECT c - & gt; '$[0], JSON_LENGTH (c), 1 INTO @ name, @ len, @ pos.
The SET @ r:=CONCAT (' {' @ the name, ':', JSON_EXTRACT (m, CONCAT (' $' @ name)), '} ');
WHILE @ pos & lt; @ len DO
SELECT CONCAT (' $' JSON_EXTRACT (c, CONCAT (' $[' @ pos, '] '))), + 1 INTO @ @ pos name, @ pos.
The SELECT JSON_INSERT (@ r, @ name, JSON_EXTRACT (m, @ name)) INTO @ r;
END WHILE;
RETURN @ r;
END

CodePudding user response:

Then calls the function implementation query
SELECT *, f (m, c) FROM me;

CodePudding user response:

Query directly from the data should be ok, why want to persistent detected a json, according to the condition it is not difficult to query the data, using mysql5.7 function to the operation of the json type, on the third floor database worthy bosses, admire, admire, strong function to write
  • Related