如何在MySQL JSON查询中使用变量?语法错误问题求解
MySQL JSON查询中使用变量的正确方案
问题根源
MySQL的JSON路径表达式(如->运算符后的字符串)是静态解析的,无法直接在路径中嵌入会话变量@rownum,直接引用会触发语法错误。
解决方法
方法1:通过字符串拼接生成动态JSON路径
利用CONCAT函数将变量嵌入JSON路径字符串,再通过JSON_EXTRACT函数执行查询:
SET @rownum = 1; SELECT JSON_EXTRACT(attributes, CONCAT('$.analyzeResult.documents[0].fields[0].Items.valueArray[', @rownum, '].valueObject.ProductCode.valueString')) FROM `table`;
如果需要提前定义路径变量,也可以拆分步骤:
SET @rownum = 1; SET @json_path = CONCAT('$.analyzeResult.documents[0].fields[0].Items.valueArray[', @rownum, '].valueObject.ProductCode.valueString'); SELECT JSON_EXTRACT(attributes, @json_path) FROM `table`;
方法2:同时去除结果的引号(可选)
如果需要获取不带双引号的纯文本结果,可搭配JSON_UNQUOTE函数:
SET @rownum = 1; SELECT JSON_UNQUOTE(JSON_EXTRACT(attributes, CONCAT('$.analyzeResult.documents[0].fields[0].Items.valueArray[', @rownum, '].valueObject.ProductCode.valueString'))) FROM `table`;
注意:
table是MySQL关键字,查询时需用反引号`包裹,避免语法冲突。
内容的提问来源于stack exchange,提问作者Svj
相关产品推荐
相关产品推荐

