Как написать функцию MySQL для извлечения значения JSONAttribute на основе имени? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть требование, что мне нужно написать mysql функцию, которая принимает 'JSONText', 'color' в качестве параметров и вывод на основе 'color'

[ 
  {
    "color":"red",
    "points":4
  },
  {
    "color": "Electric Blue",
    "points": 5
  }
 ]

Итак, моя функция будет быть

 DELIMITER $$
 CREATE FUNCTION GetColorPoints(JSONParam Text, color VARCHAR(10)) RETURNS INT
 BEGIN
        **???** //WHAT SHOULD GO HERE??
 END$$
 DELIMITER;

Итак, если я вызываю функцию с входами, она должна давать мне очки.

 SELECT GetColorPoints('[ {"color":"red", "points":4}, {"color": "Electric Blue", "points": 5} ]', 'Electric Blue') AS 'ColorPoints';

1 Ответ

1 голос
/ 31 марта 2020

Если вы достаточно счастливы, чтобы использовать MySQL 8.0, вы можете сделать это с помощью JSON_TABLE():

set @js = '[ { "color":"red", "points":4 }, { "color": "Electric Blue", "points": 5 } ]';
select points
from json_table(
    @js,
    '$[*]' columns(
        color varchar(50) path '$.color',
        points int path '$.points'
    )
) t
where color = 'red'
...