我有 MariaDB 10.1。- 我不能使用 JSON 函数 -JSON_EXTRACT
等等)。
在数据库中,我有一个表 CONTRACTS 和一个data
包含 JSON(数据类型 TEXT)的列:
{"879": "Test", "880": "15255", "881": "2021-10-22"}
我需要找到键值"880"
在某个范围内的所有记录,例如大于10000
和小于20000
,即。在这种情况下,值为 的记录15255
。
谢谢你的建议。
我有 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 。