您的位置:首页 > 教程 > Mysql/MariaDB > MySQL中JSON字段数据类型详解

MySQL中JSON字段数据类型详解

2022-06-14 13:53:01 来源:易采站长站 作者:

MySQL中JSON字段数据类型详解

目录
前言创建JSON值搜索JSON类型数据在 JSON 和非 JSON 值之间转换JSON 值的汇总总结

前言

JSON>

    自动验证存储在JSON列中的 JSON 文档。无效的文档会产生错误。优化的存储格式。存储在JSON列中的 JSON 文档将转换为内部格式,从而可以快速读取文档元素。JSON列不能具有非NULL的默认值。

    创建JSON值

    JSON类型字段可以是JSONObject,也可以是JSONArray类型,在>

      JSON_TYPE()函数需要一个 JSON 参数,并尝试将其解析为 JSON 值。如果有效,则返回值的 JSON 类型,否则返回错误:

      搜索JSON类型数据

      SELECT * FROM sd_school_faq WHERE faq_similar_question -> '$[*].*' LIKE '%课表在哪里?%';

        路径可以包含***通配符:

        .[*]求值为 JSON 对象中所有成员的值。

          [*]计算 JSON 数组中所有元素的值。prefix**suffix计算所有以命名前缀开头并以命名后缀结尾的路径。

          文档中不存在的路径(评估为不存在的数据)评估为NULL

          在>

          下 table 概述了在 JSON 值和其他类型的值之间进行转换时 MySQL 遵循的规则:

          table11.3 JSON 转换规则

          other typeCAST(其他类型的 AS JSON)CAST(JSON AS 其他类型)
          JSONNo changeNo change
          utf8 字符类型(utf8mb4utf8ascii)该字符串将解析为 JSON 值。JSON 值被序列化为utf8mb4字符串。
          其他字符类型其他字符编码将隐式转换为utf8mb4,并按 utf8 字符类型所述进行处理。JSON 值被序列化为utf8mb4字符串,然后转换为其他字符编码。结果可能没有意义。
          NULL结果为 JSON 类型的NULL值。Not applicable.
          Geometry types通过调用ST_AsGeoJSON()将几何值转换为 JSON 文档。非法操作。解决方法:将CAST(json_val AS CHAR)的结果传递给ST_GeomFromGeoJSON()
          所有其他类型结果是由单个标量值组成的 JSON 文档。如果 JSON 文档由目标类型的单个标量值组成,并且该标量值可以转换为目标类型,则成功。否则,返回NULL并产生警告。

          JSON 值的ORDER BYGROUP BY按照以下原则工作:

            标量 JSON 值的排序使用与前面的讨论相同的规则。对于升序排序,SQL NULL在所有 JSON 值(包括 JSON 空 Literals)之前进行排序;对于降序排序,SQL NULL对所有 JSON 值(包括 JSON 空 Literals)进行排序。JSON 值的排序键受max_sort_length系统变量的值限制,因此仅在前max_sort_length个字节之后才不同的键比较相等。当前不支持对非标量值进行排序,并且会出现警告。

            对于排序,将 JSON 标量转换为其他一些本机 MySQL 类型可能是有益的。例如,如果名为jdoc的列包含 JSON 对象,其成员由id键和一个非负值组成,则使用此 table 达式按id值进行排序:

            ORDER BY CAST(JSON_EXTRACT(jdoc, '$.id') AS UNSIGNED)

            如果碰巧有一个生成的列被定义为使用与ORDER BY中相同的 table 达式,则 MySQL 优化器将识别出该列,并考虑将索引用于查询执行计划。

            JSON>

            对于 JSON 值的汇总,与其他数据类型一样,将忽略 SQL NULL值。非NULL值将转换为数字类型并进行汇总,但MIN()MAX()GROUP_CONCAT()除外。尽管可能会发生截断和精度损失,但转换为数字应该为数字标量的 JSON 值产生有意义的结果。转换为其他 JSON 值的数量可能不会产生有意义的结果。

            总结

            到此这篇关于MySQL中JSON字段数据类型的文章就介绍到这了,更多相关MySQL>

            如有侵权,请发邮件到 gridf@126.com

相关文章

  • mysql 5.7.30安装配置方法图文教程

    mysql 5.7.30安装配置方法图文教程

    之前把服务器里面的MySQL卸了重装,安装mysql时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑 截个图,作为笔记,也正好留给需要的朋友们。
    2019-01-03
  • MySQL5.6免安装版环境配置图文教程

    MySQL5.6免安装版环境配置图文教程

    MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行。但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的。很多人下了zip格式的解压发现没有setup.exe,面对一堆文
    2019-01-04
  • Linux下安装mysql-8.0.20的教程详解

    Linux下安装mysql-8.0.20的教程详解

    ** Linux下安装mysql-8.0.20 ** 环境介绍 操作系统:CentOS 7 mysql下载地址:https://dev.mysql.com/downloads/mysql/ 下载版本:mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz 卸载mysql 查看是否安装过mysql,命令:fin
    2020-05-24
  • linux环境下安装mysql数据库的详细教程

    linux环境下安装mysql数据库的详细教程

    1.安装数据库 1)yum -y install mysql-server(简单) yum命令自动从网上寻找mysql服务资源,下载至本地并完成安装 2)也可以自己在网上下载mysql服务,通过xftp传输至Linux系统,自己安装(一般安
    2020-06-20
  • MySQL8.0.20安装教程及其安装问题详细教程

    MySQL8.0.20安装教程及其安装问题详细教程

    原文地址:https://blog.csdn.net/m0_46579864/article/details/105981304 官网下载MySQL的安装包 1.下载链接如下: MySQL8.0.20版本 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html 其他版本:MySQL8.0.16版本
    2020-05-10
  • MySQL对数据库操作(创建、选择、删除)

    MySQL对数据库操作(创建、选择、删除)

    MySQL 创建数据库 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB: [root@host]# mysql
    2020-07-01
  • Linux系统MySQL8.0.19快速安装配置教程图解

    Linux系统MySQL8.0.19快速安装配置教程图解

    一、环境介绍 Linux系统使用yum安装MySQL需要从网上下载MySQL的一系列组件,这个过程非常耗时且有下载中断的可能,如果想要快速安装MySQL,可以先在网上将MySQL的离线包下载下来传到系
    2020-02-27
  • mysql 加了 skip-name-resolve不能链接数据库问题的解决方法

    mysql 加了 skip-name-resolve不能链接数据库问题的解决方法

    mysql 加了 skip-name-resolve不能链接的问题, 要确认 MySql 是否采用过主机名的授权 在 MySql Server 的配置文件 My.ini 中,增加如下两行: [mysqld] skip-name-resolve 它将禁止 MySql Server 对外部连接进
    2019-01-04