如何在MariaDB中将json列中的整数值转换为浮点数?

zujrkrfu  于 2023-06-05  发布在  其他
关注(0)|答案(1)|浏览(182)

我需要将$.fonts_size json属性的值转换为float。
目前有整数值,如1,我需要它们变成1.0,使我的应用程序将它们视为double。
在这个例子中,json像这样:

{
    "fonts_size": 1
}

应转换为:

{
    "fonts_size": 1.0
}

在MariaDB中可以在SQL中做到这一点吗?
我尝试了这样的解决方案:

SELECT JSON_EXTRACT(
    JSON_SET(
        settings,
        "$.fonts_size",
        CAST(
            JSON_EXTRACT(
                settings,
                "$.fonts_size"
            )
            AS FLOAT
        )
    ),
    '$.fonts_size'
) 
FROM blocks WHERE JSON_TYPE(JSON_EXTRACT(settings, "$.fonts_size")) = "INTEGER"

然而,这并没有什么区别。还尝试连接".0",但结果是string而不是double

jm81lzqq

jm81lzqq1#

这是一种将整数转换为DECIMAL的方法,小数点后有一位数字:

SELECT CAST(JSON_EXTRACT(
                settings,
                "$.fonts_size"
       ) AS DECIMAL(5,1)),
JSON_TYPE(JSON_EXTRACT(settings, "$.fonts_size"))
FROM blocks
WHERE JSON_TYPE(JSON_EXTRACT(settings, "$.fonts_size")) = "INTEGER"

DECIMAL(5,1)表示一个共有5位数的数字,其中1位在小数点的右边。(因此,4左,1右。)

相关问题