mysql json字段中数值的加减

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql json字段中数值的加减相关的知识,希望对你有一定的参考价值。

表 table1 中有 字段 f ,值为 "a":"count":1,"b":"count":3 现在假设需要 将 a.count的值加3,结果为"a":"count":4,"b":"count":3,请问sql怎么写?

如果是mysql5.7版本以下的,这个字段的值在mysql里面就是个字符串,纯粹的sql语句是不行的,只能把这个字段的值拿出来格式化变成json对象,然后更改值,再放进去;

如果是mysql5.7的话,可以通过新增的json_set函数,来修改json字段的值,希望对你有帮助

参考技术A

你要的代码如下:

update table1 set f = json_set(f, "$.a.count", (json_extract(f, "$.a.count") + 3))
 where id = 1

具体的操作流程,截图:

本回答被提问者采纳
参考技术B

如果是mysql5.7版本以下的,这个字段的值在mysql里面就是个字符串,纯粹的sql语句是不行的,只能把这个字段的值拿出来格式化变成json对象,然后更改值,再放进去;

如果是mysql5.7的话,可以通过新增的json_set函数,来修改json字段的值,希望对你有帮助

追问

mysql是5.7+,麻烦写出sql语句,需要实现类似普通字段中update table set count=count+3 where id='a' 的效果。

mysql 中日期的加减

我用jsp写程序的时候需要让用户在文本框中输入一个日期(假设是2008-03-11),但是我在执行算起来语句时,想让日期加一天,"SELECT count(*)from table where time >='2008-03-12',应该怎么办?

可以通过SELECT DATEADD(day, 相差天数, 日期) AS 别名 的格式来计算上周SELECT DATEADD(day, -7, 日期) AS 别名上月SELECT DATEADD(month, -1, 日期) AS 别名上年SELECT DATEADD(year, -1, 日期) AS 别名 参考技术A 不太清楚masql中时间是什么格式的;
可以试试在代码中把 '2008-03-11' 变成 '2008-03-11 23:59:59.999' 传入sql
SELECT count(*)from table where time > '2008-03-11 23:59:59.999'
参考技术B SELECT count(*)from table where time >='2008-03-11'+INTERVAL 1 day

以上是关于mysql json字段中数值的加减的主要内容,如果未能解决你的问题,请参考以下文章

mysql 中日期的加减

mysql中日期函数和日期的加减运算

mysql语句如何作加减乘除运算?

3.1.4MySQL__数据库分组,拼接查询,日期函数,日期加减,间隔,数值四舍五入,排序,分组,having筛选,分组TopN,流程控制函数,

Java加减导致的类型问题

如何修改timepicker的加减按钮