mysql如何取出json里某一个字段或计算两数
2024-01-08 18:39:54
mysql如何取出json里某一个字段或计算两数
假如mysql里有这么一个字段:your_json_column,存储json数据为
{
"status":2,
"orderNo":"BC20231114035353321101",
"dealTime":1699960357000,
"reportUrl":"https://internalt.sffix.cn",
"recycleOrderNo":"VCNZJ202311155521",
"supplementaryPrice":421.99,
"oldMachineDealPrice":1372,
"oldMachineSubsidyPrice":0
}
问题:现在要取出reportUrl
字段和计算质检回收价 = oldMachineDealPrice-oldMachineSubsidyPrice
,如果小于0或不存在,则显示0.00,否则保留两位小数,并且提取出reportUrl
字段
问题解决
在你的 JSON 数据中,你需要计算质检回收价,并且在计算值小于0或不存在时显示0.00。同时,你也想提取 reportUrl
字段。你可以使用 MySQL 中的 JSON 函数来实现这个目标。
以下是一个示例 SQL 查询:
SELECT
JSON_UNQUOTE(JSON_EXTRACT(your_json_column, '$.reportUrl')) AS reportUrl,
CASE
WHEN JSON_EXTRACT(your_json_column, '$.oldMachineDealPrice') IS NULL
OR JSON_EXTRACT(your_json_column, '$.oldMachineSubsidyPrice') IS NULL
OR (JSON_EXTRACT(your_json_column, '$.oldMachineDealPrice') -
JSON_EXTRACT(your_json_column, '$.oldMachineSubsidyPrice')) < 0
THEN '0.00'
ELSE
FORMAT(
JSON_EXTRACT(your_json_column, '$.oldMachineDealPrice') -
JSON_EXTRACT(your_json_column, '$.oldMachineSubsidyPrice'),
2
)
END AS qualityCheckRecoveryPrice
FROM
your_table
WHERE
-- 如果有其他的条件,可以在这里添加
-- 可选:JSON_EXTRACT(your_json_column, '$.oldMachineDealPrice') IS NOT NULL
-- 可选:JSON_EXTRACT(your_json_column, '$.oldMachineSubsidyPrice') IS NOT NULL;
请替换 your_table
和 your_json_column
为你的实际表名和包含 JSON 数据的列名。
这个查询使用了 JSON_EXTRACT
函数来提取 JSON 数据中的字段,并使用 CASE
语句来根据条件判断计算结果。FORMAT
函数用于确保结果保留两位小数。
请注意,如果 JSON 数据中的字段值是字符串类型,你可能需要在比较和计算之前将其转换为数字类型。
在 MySQL 5.7 版本之后,可以使用 CAST
或 CONVERT
函数进行转换。
例如:
CAST(JSON_EXTRACT(your_json_column, '$.oldMachineDealPrice') AS DECIMAL(10, 2))
这样可以确保比较和计算是基于数字而不是字符串进行的。
文章来源:https://blog.csdn.net/phpCenter/article/details/135413887
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!