如何在MariaDB的JSON类型allowed_user字段中筛选值为3的数据?
筛选MariaDB中JSON字段包含指定值的数据
你的表中allowed_user字段以JSON格式存储允许进入房间的用户ID,要筛选出包含用户ID 3的房间数据,可以用以下方法:
标准JSON数组场景(推荐)
如果allowed_user存储的是合法的JSON数组(比如["1","2","3","4","5"]或[1,2,3,4,5]),直接用MariaDB的JSON_CONTAINS()函数查询:
- 若ID是字符串类型:
SELECT * FROM your_table_name WHERE JSON_CONTAINS(allowed_user, '"3"');
- 若ID是数字类型:
SELECT * FROM your_table_name WHERE JSON_CONTAINS(allowed_user, 3);
非标准JSON格式场景(临时处理)
如果你的allowed_user是示例里的{"1","2","3"}这种非标准格式(这不是合法JSON,合法JSON数组用方括号,对象需要键值对),可以临时用字符串匹配查询,但强烈建议把字段修正为标准JSON数组,避免误匹配和维护问题:
SELECT * FROM your_table_name WHERE allowed_user LIKE '%"3"%';
这种方式可能会误匹配类似"13"的ID,仅作为临时方案。
内容的提问来源于stack exchange,提问作者user2976046
相关产品推荐
相关产品推荐

