0

我有 MariaDB 10.1。- 我不能使用 JSON 函数 -JSON_EXTRACT等等)。

在数据库中,我有一个表 CONTRACTS 和一个data包含 JSON(数据类型 TEXT)的列:

{"879": "Test", "880": "15255", "881": "2021-10-22"}

我需要找到键值"880"在某个范围内的所有记录,例如大于10000和小于20000,即。在这种情况下,值为 的记录15255

谢谢你的建议。

4

1 回答 1

1

也许是这样的:

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 。

于 2021-10-31T08:53:07.213 回答