如何从 MySQL 中的动态键值对中提取 JSON?

2024-01-06

我有包含 user_id 和 user_details 的用户表。它包含字符串格式的 JSON 数据,如下所示:

[{"name":"question-1","value":"sachin","label":"Enter your name?"},
    {"name":"question-2","value":"[email protected] /cdn-cgi/l/email-protection","label":"Enter your email?"},
    {"name":"question-3","value":"xyz","label":"Enter your city?"}]

我尝试过 json_extract 但如果 json 有数据,它会返回结果,如下所示:

{"name":"question-1","value":"sachin","label":"Enter your name?"}

然后它返回结果为,

    Name    |     Label
question-1  |   Enter your name? 

预期结果 : 我想从 sql 查询中的 json 中提取所有名称和标签。

示例1: 考虑到我们在 user_details 列中有以下数据,

[{"name":"question-1","value":"sachin","label":"Enter your name?"},
    {"name":"question-2","value":"[email protected] /cdn-cgi/l/email-protection","label":"Enter your email?"},
    {"name":"question-3","value":"xyz","label":"Enter your city?"}]

那么sql查询应该返回以下格式的结果,

    Name      |     Label
question-1    |  Enter your name?
question-2    |  Enter your email?
question-3    |  Enter your city?

如何在 MySQL 中使用 JSON_EXTRACT 来获取它?


我假设您没有使用表格。

SET @data = '[{"name":"question-1","value":"sachin","label":"Enter your name?"},
    {"name":"question-2","value":"[email protected] /cdn-cgi/l/email-protection","label":"Enter your email?"},
    {"name":"question-3","value":"xyz","label":"Enter your city?"}]';

SELECT JSON_EXTRACT(@data,'$[*].name') AS "name", JSON_EXTRACT(@data,'$[*].label') AS "label";

它会返回

name                                           |  label
["question-1", "question-2", "question-3"]     |  ["Enter your name?", "Enter your email?", "Enter your city?"]

根据您的表和列名称,SQL 应如下所示:

SELECT JSON_EXTRACT(user_details,'$[*].name') AS "name", JSON_EXTRACT(user_details,'$[*].label') AS "label" FROM user;

您可以通过使用一些数组循环来匹配它们。我不知道这是否是最好的方法,但它满足了我的需求。

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

如何从 MySQL 中的动态键值对中提取 JSON? 的相关文章

  • 如何在 Node.js 中使用 Winston 将日志存储到 mysql 数据库

    我正在使用 winston 为我的应用程序进行日志记录 我已经使用这个完成了文件传输 class LoggerHelper extends BaseHelper constructor cApp super cApp this props
  • 使用 PHP 将文件上传到 MySql DB

    我希望用户通过我在后端使用 MySql 用 PHP 开发的 web 应用程序上传文件 我想将文件存储在数据库中 我在这样做时遇到了问题 此外 一旦文件存储在数据库中 我们如何下载它 并在 web 应用程序中正确显示它 文件类型和文件的其他属
  • 最小有效 JSON 是多少?

    我仔细阅读了 JSON 描述http json org http json org 但我不确定我是否知道这个简单问题的答案 最小可能的有效 JSON 字符串是什么 string 该字符串是有效的 JSON 吗 42简单的数字是有效的 JSO
  • 如何对数组的数组进行 JSON_MODIFY?

    我的结构看起来像这样 Declare layout NVARCHAR MAX N Sections SectionName Section1 SectionOrder 1 Renders RenderName Render1 RenderO
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • 如何使用外连接和分组依据在查询中包含 NULL 值

    我有两个表 其中包含以下示例数据 Table 1 item name item id item desc 1 apple 2 orange 3 banana 4 grape 5 mango Table 2 user items user i
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • MySQL 查询中的窗口函数

    有没有办法在 SELECT 查询本身中动态地使用 MySQL 查询中的窗口函数 我知道在 PostgreSQL 中这是可能的 例如 下面是 PostgreSQL 中的等效查询 SELECT c server ip c client ip s
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count
  • 通过字符串操作预防 PHP SQL 注入[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中防止 SQL 注入的最佳方法 https stackoverflow com questions 60174 best way to prevent sql injection in php
  • 如何处理PDO异常[重复]

    这个问题在这里已经有答案了 我正在尝试与PDOphp 上的类 但我在找到处理错误的正确方法时遇到了一些麻烦 我编写了以下代码
  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • 如何将变量设置为触发器 MYSQL 内存储过程的结果?

    我这里有一个小问题 我正在为我的数据库工作创建一个触发器 但我不知道如何在触发器内使用存储过程 我想将过程的结果保存在变量中 然后使用稍后在 IF 比较器上变量 这是我的代码 DELIMITER CREATE TRIGGER insert
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • 将 json 反序列化为对象:包装类解决方法

    这是我的 json accessType Grant spaces spaceId 5c209ba0 e24d 450d 8f23 44a99e6ae415 privilegeId db7cd037 6503 4dbf 8566 2cca4
  • 使用 Rails 中的 postgres json 字段更新嵌套键

    我一直在尝试更新以下内容 boxes book 2 moving 2 goods to boxes book new 2 moving 2 goods 无需使用正则表达式或在 ruby 中执行此操作 但似乎有点棘手 我想添加新密钥 然后删除
  • 返回视图作为 JSON 对象的一部分

    我有一个应用程序只加载一次完整视图 我这样做的原因并不重要 重要的是 其余内容只会以部分视图的形式返回 除了一些内容之外 我还有一些 JSON 对象 我想通过每个 AJAX 请求在服务器之间来回传递 有没有办法返回一个 JSON 对象 并将
  • 如何更新 MySQL 数据库中的两列?

    这不起作用 UPDATE customers SET firstname John AND lastname Smith WHERE id 1 用逗号分隔值 AND是一个逻辑运算符 它的位置是WHERE and ON条款 UPDATE cu
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii

随机推荐