mysql - 如何查询json中不包含任何给定关键字的数据
问题描述
问题:如何查询标志中不包含任何给定关键字的数据。
表格看起来像这样。
CREATE TABLE `mangas` (
`id` bigint(20) UNSIGNED NOT NULL,
`flag` json NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
然后表格中的数据看起来像这样
INSERT INTO `mangas` (`id`,`flag`) VALUES
(1,'[\"a\", \"b\", \"c\", \"d\"]');
(2,'[\"b\", \"c\", \"d\", \"f\"]');
(3,'[\"a\", \"b\", \"1\", \"2\"]');
(4,'[\"a\", \"c\", \"1\", \"3\"]');
(5,'[\"a\", \"9\", \"10\", \"2\"]');
COMMIT;
当我使用 JSON_ 进行查询时JSON_CONTAINS(mangas.flag, '[\"a\",\"b\"]', '$')
,它可以找到所有包含 a 和 b 的数据
但是我想用a或b查询并排除所有数据。我应该怎么办?
也许我没有清楚地表达我的需求
这是一个正常的不在查询中
select * from tabel1 where a not in('a','b','c')
如何在 JSON 字段的查询中实现这一点?
解决方案
您可以使用 JSON_REMOVE() 从 JSON 中排除数据。看看这个例子,
https://database.guide/json_remove-remove-data-from-a-json-document-in-mysql/
推荐阅读
- android - 在 Android Studio 中使用 Kotlin 将 URI 的内容转换为 ByteArray
- javascript - Angular 7 中的 ApiService.ts 中的用户 JSON.parse()
- visual-studio - VS2019:如何禁用滚动条中的错误导航器?
- python - 无法使基于布尔语句的 while 循环正常运行
- java - 如何使用结果集排序?
- sql-server - 如何修复巨大的日志文件问题
- spring-integration - 向 ibm mq 发送 amqp 消息
- javascript - 如何通过 webkit 使 JS 与通过 chromedriver 一样工作?
- symfony - 奏鸣曲管理员:user_block 未显示
- java - 有没有“重班”之类的东西。它的正确定义是什么?