使用MariaDB JSON_REPLACE函数时出现#1064语法错误求助
问题原因及解决办法
- 语法错误核心原因:你将未加括号的子查询
SELECT json_system FROM sys_config直接作为JSON_REPLACE的第一个参数,MariaDB无法正确解析这种语法结构。函数参数如果是子查询,必须用括号包裹,明确标识这是一个返回单行单列的标量子查询。 - 额外注意事项:你的
json_system列是longtext类型,而非MariaDB原生JSON类型。虽然JSON函数可以处理格式正确的字符串,但显式转换为JSON类型能避免潜在的兼容问题,更稳妥。
正确SQL语句示例
方式一:给子查询添加括号
SELECT JSON_REPLACE((SELECT json_system FROM sys_config), '$.B[1]', 4);
方式二:直接关联表查询(更常用)
SELECT JSON_REPLACE(json_system, '$.B[1]', 4) FROM sys_config;
方式三:显式转换为JSON类型(推荐)
SELECT JSON_REPLACE(CAST(json_system AS JSON), '$.B[1]', 4) FROM sys_config;
内容的提问来源于stack exchange,提问作者Scott Jennings
相关产品推荐
相关产品推荐

