You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL的JSON_EXTRACT函数中使用存储过程参数?

解决MySQL存储过程中使用参数调用JSON_EXTRACT的语法错误

问题分析

你碰到的ERROR 3143 (42000)错误,根源是JSON_EXTRACT的路径参数格式不合法。你试图把固定字符串'$.', attr, '.a11'拆分传递,但JSON_EXTRACT要求第二个参数必须是一个完整的JSON路径字符串,不能用逗号分隔多个片段来拼凑。

正确实现方案

你需要用CONCAT()函数把固定路径片段和输入参数attr拼接成完整的合法JSON路径,修改后的存储过程代码如下:

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

验证效果

当你执行call my_procedure('a1');时,CONCAT()会自动把'$.'、'a1'和'.a11'拼接成完整路径'$.a1.a11',这样JSON_EXTRACT就能正确提取到"101"这个目标值了。

额外小技巧

如果你的MySQL版本在5.7.9及以上,还可以用更简洁的**JSON路径运算符->>**来简化写法,代码会更直观:

SELECT col1->>CONCAT('$.', attr, '.a11') FROM table1;

内容的提问来源于stack exchange,提问作者Nikhil Deshpande

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:06:35