繁体   English   中英

如何在 MySql json 字符串中进行正则表达式

[英]How to regexp in MySql json string

让我们假设这个users表:

-----------------------------------------
| id | ... | info                       |
-----------------------------------------
| 1  | ... | {"items":["132","136"]}    |

我需要请求获取具有id == 136项目的users
以下是我构建的sql但它不起作用,我不明白为什么:

SELECT _u.id FROM users _u WHERE _u.info REGEXP '("items":)([)("136")(])'

先感谢您!

这是使用 MySQL JSON 函数的一种方法:

SELECT *
FROM yourTable
WHERE JSON_SEARCH(JSON_EXTRACT(json, "$.items"), 'one', "136") IS NOT NULL;

演示

JSON_EXTRACT的调用首先提取items键下的 JSON 数组。 然后,我们使用JSON_SEARCH来尝试查找元素"136"

编辑:

如果您确定要搜索的 JSON 始终只是一个关键items以及单个级别 JSON 数组,那么REGEXP在这里可能是可行的:

SELECT *
FROM yourTable
WHERE json REGEXP '"items":\\[.*"136".*\\]';

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM