mySQL中的JSON *** 作

mySQL中的JSON *** 作,第1张

创建单个json数组

创建单个对象,并返回该对象

将其他类型的值转换成JSON类型来获取json值

将 json 值作为参数传入,如果值有效,则返回其 json 类型,否则报错

将两个或多个 json 值合并为一个 json 并返回最终值

合并两个或多个 json 值,但不合并重复键的值,如果出现重复键,仅保留最后一个的值

经过函数转换得到的 json 是区分大小写的,原因在于转换后的字符集格式为 utf8mb4 和 utf8mb4_bin ,因为 utf8mb4_bin 是二进制排序规则,所以区分大小写

因为区分大小写,所以 json 中的 null 、 true 和 false 都必须用小写字母编写

直接插入键值对语句和用 JSON_OBJECT 转换成json值存入的差别在于,前者需要双反斜杠转义字符,而后者只需要单反斜杠转义字符

当需要存储的内容如下

使用直接插入的方法时:

使用 JSON_OBJECT 时

案例

因为 $[1] 和 $[2] 计算为非标量值, 所以它们可以用作选择嵌套值的更具体的路径表达式的基础。例子:

结合 JSON_SET``JSON_INSERT``JSON_REPLACE``JSON_REMOVE 的使用

JSON_SET 替换存在的路径的值, 并为不存在的路径添加值

JSON_INSERT 添加新值, 但不替换现有值:

JSON_REPLACE 替换现有值并忽略新值:

JSON_REMOVE 使用一个或多个路径, 这些路径指定要从文档中删除的值。返回值是原始文档减去由文档中存在的路径选择的值:

可以通过update方法进行批量修改,之后添加必要的条件,针对固定条件的数据进行批量修

改。

sql:update table_name SET age=age+1 where id like '%1111% '

以上语句就是将id字段中包含1111的age字段,进行加1 *** 作。

备注:如果是全部更新的话,去掉后面的where语句即可。

sql:update table_name SET age=25

创建表

CREATE TABLE t_json(id INT PRIMARY KEY, NAME VARCHAR(20) , info  JSON)

插入记录

INSERT INTO t_json(id,sname,info) VALUES(1 ,'test','{"time":"2017-01-01 13:00:00","ip":"192.168.1.1","result":"fail"}')

INSERT INTO t_json(id,sname,info)  VALUES(2 ,'my',JSON_OBJECT("time",NOW(),'ip','192.168.1.1','result','fail'))

查询IP键

SELECT sname,JSON_EXTRACT(info,'$.ip') FROM t_json

查询有多少个键

SELECT id,json_keys(info) AS "keys" FROM t_json

删除键

UPDATE t_json SET info = json_remove(info,'$.ip')

增加键

UPDATE t_json SET info = json_set(info,'$.ip','192.168.1.1')

变更值

UPDATE t_json SET info = json_set(info,'$.ip','192.168.1.2')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8504455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存