如何使用MySQL将表中JSON字段的整数值转换为字符串
解决JSON字段整数值转字符串的MariaDB语法问题
你的原SQL报错主要有两个潜在问题:一是表名table是SQL关键字,未加反引号包裹会触发语法错误;二是直接用CAST转CHAR无法正确生成JSON格式的字符串值,需要用JSON_QUOTE来生成符合JSON规范的带引号字符串。
修正后的SQL语句如下:
UPDATE `table` SET details = JSON_SET(details, '$."1"', JSON_QUOTE(details->>'$."1"')) WHERE details->>'$."1"' IS NOT NULL;
关键说明:
- 表名加反引号:
table是SQL保留关键字,必须用反引号``包裹才能正确识别为表名。 - 用
JSON_QUOTE生成JSON字符串:details->>'$."1"'会提取出JSON字段中"1"对应的无引号值(比如123),JSON_QUOTE会自动给这个值加上双引号,转换成符合JSON格式的字符串值("123"),这样JSON_SET就能正确把它设置为JSON字段里的字符串类型值。 - 简化JSON提取写法:
->>是JSON_UNQUOTE(JSON_EXTRACT(...))的简写,语法更简洁,避免嵌套函数的语法混乱。
如果你的MariaDB版本较旧(低于10.2),需要注意:MariaDB从10.2版本开始才支持完整的JSON函数,若版本过低需先升级。
内容的提问来源于stack exchange,提问作者user6085744
相关产品推荐
相关产品推荐

