获取 MySQL 中特定值的 Json 键

2023-12-08

我刚刚安装了 MySQL 5.7.27,我想使用一些 Json 字段,所以我创建了一些记录,例如字段中的这个值:

{
  "Intitule": {
    "name": "Intitule de la formation",
    "stats": false,
    "is_array": false,
    "is_filter": true,
    "chart": "pie",
    "col": "6"
  },
  "Fin": {
    "name": "Date de fin",
    "stats": false,
    "is_array": false,
    "is_filter": false,
    "chart": "pie",
    "col": "6"
  }
}

我想知道如何检索包含的元素的键"is_filter":true, dans 相关的“名称”

我尝试过 JSON_SEARCH、JSON_EXTRACT 但我认为我用得不好。

例如,对于这个值,我预计输出将是:

Key: Intitule
Name: Intitule de la formation

Because is_filter是真的,但不适用于“Fin”

感谢您的帮助!


就像我说的,在 MySQL 中解析 JSON 可能是一个挑战,因为您在这里处理基于文本的键。
所以你需要使用JSON_KEYS()为了将它们与数字生成器结合使用,会生成动态 JSON 路径以供使用JSON_EXTRACT()

MySQL的8个函数JSON_TABLE()让它变得容易得多..

请记住,这个答案纯粹是为了教育乐趣

比尔·卡尔文的评论

您应该以不同的方式构建 JSON 以支持 搜索你需要做的,否则你不应该使用 JSON。只需存储 多行数据,然后SELECT * FROM mytable WHERE is_filter = true -

Query

 SELECT
  JSON_UNQUOTE(
    JSON_EXTRACT(json ,  CONCAT('$.', SUBSTRING_INDEX(
       SUBSTRING_INDEX(json_parsed, ',', number_generator.number)
       , ','
       , -1
     ), '.name'))) AS name
FROM (

  SELECT 
   @row := @row + 1 AS number
  FROM (
    SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION   SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
  ) row1
  CROSS JOIN (
    SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION  SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9
  ) row2
  CROSS JOIN (
    SELECT @row := 0 
  ) init_user_params 
) AS number_generator
CROSS JOIN (

    SELECT  
        SUBSTRING(json_keys, 2, json_keys_length - 2) AS json_parsed
      , json_keys
      , json
      , JSON_LENGTH(json_keys) AS json_array_length                       
    FROM (
       SELECT 
            JSON_KEYS(record.json) AS json_keys
          , json
          , LENGTH(JSON_KEYS(record.json)) AS json_keys_length
       FROM (
          SELECT 
             '{
                "Intitule": {
                   "name": "Intitule de la formation",
                   "stats": false,
                   "is_array": false,
                   "is_filter": true,
                   "chart": "pie",
                   "col": "6"
                },
                "Fin": {
                    "name": "Date de fin",
                    "stats": false,
                    "is_array": false,
                    "is_filter": false,
                    "chart": "pie",
                    "col": "6"
                    }
                }' AS json
          FROM  
            DUAL  
       ) AS record                     
    ) AS json_information  
  ) AS json_init
WHERE
   number_generator.number BETWEEN 0 AND json_array_length
 AND
   JSON_EXTRACT(json ,  CONCAT('$.', SUBSTRING_INDEX(
     SUBSTRING_INDEX(json_parsed, ',', number_generator.number)
     , ','
     , -1
   ), '.is_filter')) = true 

Result

| name                     |
| ------------------------ |
| Intitule de la formation |

see demo

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 MySQL 中特定值的 Json 键 的相关文章

  • 与 Jackson 一起从 ASP.NET 反序列化日期

    我有一个 json 字符串 从 ASP NET Rest 服务返回 中的日期 如下所示 created Date 1277931782420 0700 杰克逊无法解析该日期 我可以编写自己的日期格式并将其传递给mapper getDeser
  • PHP 和 MySql 检查表是否为空

    我有点菜鸟 而且我很难过 我需要一些代码来搜索数据库表以查找与 id 变量匹配的行 我需要抓取该表 描述 中的一个字段 如果它为空 我需要显示一条消息 如果不是另一条消息 这是我的代码 我知道我需要添加 mysqli 转义字符串 只需从内存
  • Mysql使用触发器建表

    我尝试在 Mysql 触发器内创建表 但没有创建 如何使用触发器创建表 这里传递的表的名称是动态的 据我所知 在触发器内创建表是不可能的 看这里 http forums mysql com read php 99 121849 122609
  • 将表类型添加到 JSON 编辑器

    我想了解的代码这个 JSON 编辑器 http mb21 github io JSONedit 并修改它 In 指令 js https github com mb21 JSONedit blob gh pages js directives
  • 如何在 laravel 中查询 json 列?

    我用的是 Laravel 5 6 我有一块田地 字段的数据类型为json 字段 desc 字段 的值如下所示 code 1 club CHE country ENGLAND code 2 club BAY country GERMANY c
  • mysql 中的 max(长度(字段))

    如果我说 select max length Name from my table 我得到的结果是 18 但我也想要相关数据 所以如果我说 select max length Name Name from my table 这是行不通的 我
  • 在json文件中导出neo4j数据库

    我想以 JSON 文件导出 Neo4j 图形数据库 This is a Export JSON button in Neo4j web UI version as shown in attached image below 但是 Neo4j
  • 我无法访问 XAMPP phpMyAdmin;它说:错误 MySQL 说:文档无法连接:无效设置

    完整错误消息 Error MySQL said Documentation Cannot connect invalid settings Connection for controluser as defined in your conf
  • 如何在Sequelize中配置一对多关系?

    我目前正在使用 Express 和 Sequelize MySQL 想知道解决这个问题的最佳方法是什么 如果这是一个基本问题 我很抱歉 因为我对 Sequelize 甚至 SQL 数据库都很陌生 我有一个模型User像这样 export d
  • 使用 Java 连接到 MySql - SSL 连接

    我一直在尝试连接到 MySql 数据库 该数据库使用 ssl 连接与 java 并遇到麻烦 如果任何人可以帮助我 将会有很大的帮助 手动连接MySql 我们使用MySQL Workbench 参数 主机名 test db1 ro xxxxx
  • 交叉表的动态 MySQL 查询/视图

    我目前有一个带有以下 sql 的硬编码视图 select username case user role role id when 1 then true else false end as ROLE SUPER case user rol
  • Laravel 5.2 中使用多个 MySQL 数据库连接查询关系存在

    我正在处理以下情况 我有两个模型 一个Employee with id and name字段和一个Telephone with id employee id and flag字段 还有一个一对多关系在这两种模型之间 即一个员工可能拥有多部电
  • 更改 MySQL Workbench 上的默认字符集

    我正在尝试使用连接到我的 MYSQL 数据库utf8mb4字符集 请注意 数据库字符集的全局设置已经是 utf8mb4 我可以使用 CLI 轻松完成此操作 如下所示 mysql h myhostname u myuser p default
  • 使用命名占位符时 PHP/SQL 插入错误

    我有以下 PHP PDO 语句 STH this gt db gt prepare INSERT INTO UserDetails FirstName LastName Address City County PostCode Phone
  • 如何复制具有 MySQL 中保留的键和其他结构特征的表?

    如何复制保留键和其他结构特征的表 包括主键 外键和索引 这可以通过单个 MySQL 查询来完成吗 我正在使用 create table newtable as select 但此方法会使所有键和索引丢失 无法使用单个查询来从另一个表复制一个
  • MySQL 连接最新行

    我有两张桌子agents and calls 座席将始终处于一个活动呼叫中 可能有另一个待处理的呼叫分配给某个座席 而该座席尚未应答 我想编写一个查询来测试最新的调用是否按排序dateCreated与代理表中当前活动的呼叫匹配 以下是当前呼
  • 如何在 Scala 中使用 Circe 解码 JSON 列表/数组

    我有代码片段 cursor downField params downField playlist downField items as List Clip 其中 Clip 是字符串和数字的简单 case 类 传入的 Json 应包含一个
  • 为 DocumentDb 设置自定义 json 转换器

    我正在使用类型化 DocumentQuery 从 Azure DocumentDb 集合中读取文档 from f in client CreateDocumentQuery
  • 解析JSON数据并将其放入gridview中

    我正在开发一个应用程序 我必须在其中解析JSON数据并且必须将它们放入自定义中gridview 它应该是这样的 到目前为止 我已经在 asynctask 中解析了 JSON 数据并获取了这些值 这是我的代码 private class ge
  • PHP 插入中的 mysqli_affected_rows

    我有这个代码 if mail to subject message headers insert member sql INSERT INTO members id username VALUES id username insert me

随机推荐

  • 定义第一个日期选择器的第二个日期选择器的开始日期

    我正在研究两个引导日期选择器 一旦用户单击第一个日期选择器上的任何日期 第二个日期选择器的开始日期应该是在第一个日期选择器中选择的 在此之前所有日期都应被禁用 但我肯定走错了路 我无法弄清楚 变量 diffDays 的值没有反映在第二个日期
  • 执行 while / 循环以获得 10 个随机结果

    您好 我正在尝试为我的网站制作一个标签脚本 以便每次搜索引擎访问我的网站时 我的网站上都会显示 10 个不同的标签 这些标签将从数据库中获取 所以此刻我已经对其进行了编码 因此它只抓取一个 因为我不知道如何做while Like so sq
  • 使用 VBA 将 Access 中的 RTF 文本复制到单词表

    有没有办法使用 VBA 将 Access 数据库中的备注字段中的 RTF 文本复制到 Word 文档 我现在有这段代码 但它会生成 html 文本 该文本包含标签但未格式化 Query the database and get the sa
  • WCF 和证书(相互身份验证)的糟糕性能

    伙计们 姑娘们 我们稍后使用 WCF 作为应用程序的网站性能很糟糕 我们正在使用消息级安全性和证书 相互身份验证 我们在应用程序对象中缓存通道工厂 Sub Application Start ByVal sender As Object B
  • 如何在 MVC4 中识别 TempData 对象

    我有一个创建 TempData 对象的 ActionMethod TempData Message new Message Text txtMessage Success false 然后我在视图中读取 TempData 如下所示 var
  • 通过 Twitter Streaming API 获取所有过去的推文

    我如何通过 Twitter Streaming API 获取所有过去的推文 如您所知 它发送实时推文 而不是过去的推文 有用的计数参数在 2010 年被禁用 REST API 有如此糟糕的限制 以至于需要一生才能获取所有过去的推文 有什么解
  • 如何使用弹性框将第一个按钮对齐到左侧? [复制]

    这个问题在这里已经有答案了 div div
  • 如何将python变量传递给html变量?

    我需要从 python 中的文本文件读取 url 链接作为变量 并在 html 中使用它 文本文件 file txt 仅包含一行 http 188 xxx xxx xx 8878 这一行应该保存在变量 link 中 然后我应该在html中使
  • 解决 Azure YAML Pipeline 多个变量组中变量名称重叠的问题

    我们正在努力将经典 Azure Pipelines 转换为 YAML Pipelines 不清楚的一件事是如何确保两个具有相同名称但不同含义的变量的不同变量组不会互相踩踏 例如 如果我有变量组vg1 and vg2 每个变量都有名为secr
  • 从 EF Core 加载时计算 NotMapped 属性

    我们确实有一个实体类定义如下 Table Users Schema Mstr Audited public class User public virtual string FamilyName get set public virtual
  • 最大宽度与最小宽度

    我正在阅读的大多数关于使用媒体查询的教程都演示了如何使用min width 但我很少看到人们使用max width 这是人们使用的某种设计趋势或模式吗 min width over max width 例如 我正在设计一个从移动设备开始一直
  • 使用 boost 几何体调整几何对象模型的其他问题

    我想将 boost geometry 算法应用于以下不可变的 2D 模型 分别由点 多边形 开放或封闭 和多边形域类 具有任意数量的孔 类组成 如下所示 include
  • 如何给客户一个matlab项目?

    如果一家公司从事 matlab 项目 那么他们如何向客户提供该项目 我的意思是他们将哪个文件发送给客户 因为他们无法向客户移交整个代码和数据 这取决于很多事情 例如您为客户构建的产品的性质 您与他们的关系和合同协议 以及他们将来是否需要修改
  • PySpark java.io.IOException:方案没有文件系统:https

    我正在使用本地窗口并尝试加载XML在 python 上使用以下代码的文件 我遇到了这个错误 有谁知道如何解决它 这是代码 df1 sqlContext read format xml options rowTag IRS990EZ load
  • 如何避免警告“使用集合获取指定的firstResult/maxResults;在内存中应用!”当使用休眠时?

    我在服务器日志中收到警告 通过集合获取指定的firstResult maxResults 在内存中应用 然而一切工作正常 但我不想要这个警告 我的代码是 public employee find int id return employee
  • 扩展记录何时引入?

    在 Delphi 7 中 记录只不过是分组到一个位置的数据集合 在过去的几个版本中 您已经能够向它们添加公共和私有成员 方法 属性和构造函数 将它们更像对象一样对待 这个扩展语法是在哪个版本中引入的 编辑 如果有人想知道我为什么问 我正在尝
  • 在ggplot2中循环数据帧

    我想使用来自多个不同数据帧的 ggplot 绘制一系列绘图 我计划使用一个列表并迭代该列表 如下所示 libraries lt objects make a list of the dataframes we want to graph f
  • Laravel 应用程序未在 xampp 或实时服务器上运行,但在 php artisan 服务上运行良好

    我的 laravel 应用程序无法在 xampp 或实时服务器上运行 但在 PHP artisanserve 提供的链接上运行良好 每当我在 xampp 上运行这个应用程序时 它都会返回 404 错误 我还有其他 Laravel 应用程序也
  • 如何连接sql server表

    我在连接两张桌子时遇到一些麻烦 这是我的两张桌子的样子 Table 1 Customer ID CustomerName Add 1000 John Smith 1001 Mike Coles 1002 Sam Carter Table 2
  • 获取 MySQL 中特定值的 Json 键

    我刚刚安装了 MySQL 5 7 27 我想使用一些 Json 字段 所以我创建了一些记录 例如字段中的这个值 Intitule name Intitule de la formation stats false is array fals