创建单个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')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)