【问题标题】:How to use mysql stored procedure parameter in JSON_EXTRACT如何在 JSON_EXTRACT 中使用 mysql 存储过程参数
【发布时间】:2018-08-29 14:57:37
【问题描述】:

如何在 JSON_EXTRACT 中使用 mysql 存储过程参数。

表:

SELECT * FROM table1;
col1: {"a1":{"a11":"101","a12":"102"},"a2":{"a22":"201","a23":"202"}}

存储过程代码:

DROP PROCEDURE IF EXISTS my_procedure;
DELIMITER //
CREATE PROCEDURE `my_procedure` (IN attr varchar(50))
BEGIN
  SELECT JSON_EXTRACT(col1, '$.',attr,'.a11') FROM table1;
END//
DELIMITER ;

调用存储过程:

call my_procedure('a1');

错误:

ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 2.

如果我将存储过程代码更改为:

SELECT JSON_EXTRACT(col1, '$.a1.a11') FROM table1; /* this will work*/

但想在存储过程参数中传递 JSON_EXTRACT 路径。我正在使用 mysql 5.7.21 谢谢。

【问题讨论】:

    标签: mysql mysql-5.7


    【解决方案1】:

    您应该 CONCAT() 您的 attr 参数与路径的其余部分,以使其成为有效的路径表达式。

    例如

    SELECT JSON_EXTRACT(col1, CONCAT("$." , attr, ".a11"));
    

    演示:

    https://www.db-fiddle.com/f/pLrpXBpyZCEX6FySvWqiXz/0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 2012-03-21
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      相关资源
      最近更新 更多