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

MySQL中如何将JSON子值转换为整数?

解决JSON_SET更新后数值为double类型的问题

你当前的问题出在直接对JSON提取的值做乘法运算后,结果默认是浮点数,导致JSON_SET将其存为double类型。而你尝试的CAST写法存在语法错误——->>操作符右侧只能是JSON路径字符串,不能直接跟CAST表达式。

正确的写法是先提取JSON值,再对计算结果做类型转换,把结果转为整数后传入JSON_SET:

UPDATE {$table}
SET
    {$column} = JSON_SET(
        {$column},
        '$.{$jsonKey}',
        CAST( ({$column}->>'$.{$jsonKey}') * 100 AS UNSIGNED )
    )

如果你的数值可能包含负数,可以把UNSIGNED换成SIGNED:

UPDATE {$table}
SET
    {$column} = JSON_SET(
        {$column},
        '$.{$jsonKey}',
        CAST( ({$column}->>'$.{$jsonKey}') * 100 AS SIGNED )
    )

原理很直白:{$column}->>'$.{$jsonKey}'提取出JSON中的值,乘以100后通过CAST转为整数类型,此时JSON_SET会识别这个整数类型,将其以整数格式存入JSON字段,而非浮点数。

内容的提问来源于stack exchange,提问作者online Thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:55:36