mariadb - MariaDB 10.1中通过json键的值查找所有记录
问题描述
我有 MariaDB 10.1。- 我不能使用 JSON 函数 -JSON_EXTRACT
等等)。
在数据库中,我有一个表 CONTRACTS 和一个data
包含 JSON(数据类型 TEXT)的列:
{"879": "Test", "880": "15255", "881": "2021-10-22"}
我需要找到键值"880"
在某个范围内的所有记录,例如大于10000
和小于20000
,即。在这种情况下,值为 的记录15255
。
谢谢你的建议。
解决方案
也许是这样的:
SELECT
TRIM(BOTH '"' FROM
REGEXP_SUBSTR(REGEXP_SUBSTR(CONTRACTS.`data`, '"880": "[0-9]+"'), '"[0-9]+"$')
) * 1 BETWEEN 10000 AND 20000
FROM
(SELECT
'{"879": "Test", "880": "15255", "881": "2021-10-22"}' AS `data`
) AS CONTRACTS
所以最内部的正则表达式给你键+值。外部正则表达式采用该结果并提取引号中的值。修剪引号并测试值。您可以使用整个 TRIM(...) 作为 criterium 。
推荐阅读
- javascript - 如何为javascript中的按钮提供唯一ID
- windows - 具有年龄限制的批量文件复制用户配置文件
- docker - 为什么 docker compose 不挂载我的卷?
- amazon-web-services - AWS Fargate 实例无法向另一个实例发出请求
- arrays - 使用 i18n 返回翻译内容的 JSON 数组
- r - 查找两个数据帧之间最接近的时间戳,并在时间差小于 60 秒时合并不同的列
- flutter - 如何使堆叠的卡片动画以彼此落后
- c# - 如何在不知道经纬度的情况下调用 MapLocationFinder.FindLocationsAsync() 来获取地址的坐标?
- html - 如何使用 R 从网页中检索多个表
- python - 从不在 groupby 中的分组数据框中选择第二列