标签: json-extract

从 MySQL JSON 列中提取 JSON 对象的值作为数组

我有一个 json 类型的 MySQL 列。在那里,存储了一个像 JSON 对象这样的字典。现在,我想从这个 JSON 对象中提取值并创建一个 JSON 数组。

我怎样才能做到这一点?

示例查询

with json_objs(json_col) as (
  select CAST('{"key1": "value1", "key2": "value2"}' AS JSON)
  UNION ALL
  select CAST('{"key3": "value3", "key4": "value4"}' AS JSON)
)
select SOME_EXPR_I_CAN_T_FIGURE_OUT from json_objs
Run Code Online (Sandbox Code Playgroud)

预期结果

+----------------------+
| resulting_column     |
+----------------------+
| ["value1", "value2"] |
| ["value3", "value4"] |
+----------------------+
Run Code Online (Sandbox Code Playgroud)

(如果需要表 DDL :)

CREATE TABLE `json_objs` (
  `json_col` json DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

mysql arrays json json-extract

7
推荐指数
1
解决办法
6663
查看次数

如何向 json_extract mysql 输入动态密钥?

我有一张表(称之为abc),如下所示: 在此输入图像描述

名为“likelihood”的列是一个 JSON 对象(键值)。我有另一个表(我们称之为xyz),其中包含CustomerIdkey(整数值)列。我根据customerid连接上面的两个表,例如: Select xyz.customerid, key, label from xyz join abc on xyz.customerid = abc.customerid

问题:我想从表中列的 JSON 对象中查找label表列中提供的键。我发现的所有函数示例都传递硬编码密钥,而不是从数据库获取的密钥的某些动态值。keyxyzlikelihoodabcJSON_EXTRACT

mysql sql json mysql-8.0 json-extract

4
推荐指数
1
解决办法
3378
查看次数

在mysql查询上读取json数组

我知道问题可能存在口是心非的可能性,但我没有找到任何东西可以帮助我解决我的情况。

我的 mysql 列中有这个 json:

[
  {
    "ddi": "55",
    "routing_id": "7",
    "price": {
      "mt": 0.0285,
      "mo": 0.0285
    }
  },
  {
    "ddi": "598",
    "routing_id": "10",
    "price": {
      "mt": 0.06,
      "mo": 0.06
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

当我执行以下查询时:

[
  {
    "ddi": "55",
    "routing_id": "7",
    "price": {
      "mt": 0.0285,
      "mo": 0.0285
    }
  },
  {
    "ddi": "598",
    "routing_id": "10",
    "price": {
      "mt": 0.06,
      "mo": 0.06
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

我得到结果:

["55", "598"]
Run Code Online (Sandbox Code Playgroud)

我的问题是:有一种方法可以在行上返回此数据而不是 json 数组吗?喜欢:

Ddi
55
598
Run Code Online (Sandbox Code Playgroud)

mysql arrays json json-extract

4
推荐指数
1
解决办法
2万
查看次数

为什么带有 LIKE% 或 %LIKE 的 JSON_EXTRACT 通配符在 MySQL 数据库中不起作用?

我需要使用 JSON 数据在 MYSQL 表中搜索数据。使用JSON_EXTRACT(@json, "$.link") LIKE '%http%'效果符合预期。但LIKE 'http%' or '%http'不!

这是否意味着 JSON_EXTRACT 不能与单通配符选择匹配一起使用?

例子:

这是我的 JSON

set @json = '{"link": "https://www.google.com"}' ; 
Run Code Online (Sandbox Code Playgroud)
select JSON_EXTRACT(@json, "$.link") like '%com'; 
-- returns 0

select JSON_EXTRACT(@json, "$.link") like 'http%' ; 
-- returns 0

select JSON_EXTRACT(@json, "$.link") like '%google%' ; 
select JSON_EXTRACT(@json, "$.link") like '%http%' ; 
select JSON_EXTRACT(@json, "$.link") like '%com%' ; 
-- returns 1 !
Run Code Online (Sandbox Code Playgroud)

这是小提琴中的一个示例:https ://www.db-fiddle.com/f/7yPvfa2UZsZLdYSxdsnecx/0

mysql json mysql-5.7 json-extract

2
推荐指数
1
解决办法
5512
查看次数

在 MySQL 中提取 JSON 提取的第一个键

这些是我的表的列和值:

ID | RULE
123 | {"buy":{"10000":{"q":1}},"total":{"t":"DOLLAR_OFF","v":4.05}}
445 | {"buy":{"11000":{"q":1}},"total":{"t":"DOLLAR_OFF","v":2.25}}
Run Code Online (Sandbox Code Playgroud)

我的预期输出:

ID | ArticleInfo
123 | 10000
445 | 11000
Run Code Online (Sandbox Code Playgroud)

相当卡住了。

mysql sql json json-extract

2
推荐指数
1
解决办法
5970
查看次数

标签 统计

json ×5

json-extract ×5

mysql ×5

arrays ×2

sql ×2

mysql-5.7 ×1

mysql-8.0 ×1