暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于Mysql 使用json类型

Code旅途 2020-08-12
1493

使用Mysql中的json类型踩坑:

在查询有json类型的字段时使用java中的String类型进行接受,出现了中文乱码问题。

如何去解决:

1.确保当前保存和查询都是使用的utf-8格式

2.当前项目使用的mysql的驱动(mysql-connector-java)是 5.1.40 以下,去升级当前项目使用mysql的驱动至5.1.40 或者以上。

3.使用mysql提供的函数进行查询(建议json类型操作使用mysql官网提供函数)

以上方式基本可以解决中文乱码问题

随后去学习了一下关于mysql的json类型

关于MySQL的JSON类型

json类型是在5.7这个版本才引入的类型。接下来我们看看mysql针对json类型所支持的函数。

以下是mysql官网文档翻译表格:

https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html

名称描述
->
评估路径后从JSON列返回值;等效于JSON_EXTRACT()。
->>
 (介绍5.7.13)
评估路径并取消引用结果后,从JSON列返回值;等效于JSON_UNQUOTE(JSON_EXTRACT())。
JSON_APPEND()
 (已弃用)
将数据附加到JSON文档
JSON_ARRAY()
创建JSON数组
JSON_ARRAY_APPEND()
将数据附加到JSON文档
JSON_ARRAY_INSERT()
插入JSON数组
JSON_CONTAINS()
JSON文档是否在路径中包含特定对象
JSON_CONTAINS_PATH()
JSON文档是否在路径中包含任何数据
JSON_DEPTH()
JSON文档的最大深度
JSON_EXTRACT()
从JSON文档返回数据
JSON_INSERT()
将数据插入JSON文档
JSON_KEYS()
JSON文档中的键数组
JSON_LENGTH()
JSON文档中的元素数
JSON_MERGE()
 (不建议使用5.7.22)
合并JSON文档,保留重复的键。JSON_MERGE_PRESERVE()的已弃用同义词
JSON_MERGE_PATCH()
 (介绍5.7.22)
合并JSON文档,替换重复键的值
JSON_MERGE_PRESERVE()
 (介绍5.7.22)
合并JSON文档,保留重复的键
JSON_OBJECT()
创建JSON对象
JSON_PRETTY()
 (介绍5.7.22)
以易于阅读的格式打印JSON文档
JSON_QUOTE()
引用JSON文档
JSON_REMOVE()
从JSON文档中删除数据
JSON_REPLACE()
替换JSON文档中的值
JSON_SEARCH()
JSON文档中值的路径
JSON_SET()
将数据插入JSON文档
JSON_STORAGE_SIZE()
 (介绍5.7.22)
用于存储JSON文档的二进制表示的空间
JSON_TYPE()
JSON值类型
JSON_UNQUOTE()
取消引用JSON值
JSON_VALID()
JSON值是否有效


具体函数使用规则大家可以通过上面的官网去细致了解。


提醒:

  • JSON列存储的数据要么是NULL,要么必须是JSON格式数据,否则会报错。

  • JSON数据类型是没有默认值的(声明时"DEFAULT NULL")

文章转载自Code旅途,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论