mysql - 在字符串中查找子字符串但不遵循命令
问题描述
我得到了这样的数据列表
数据 | 放 |
---|---|
1,2,3,4 | 一个 |
2,3,4 | 乙 |
1,4 | C |
2,4 | D |
mysql中的这些场景应该匹配:
查找数据 | 匹配集 |
---|---|
1,2 | 一个 |
1,4 | 甲,丙 |
2,4 | 甲、乙、丁 |
1,3,4 | 一个 |
幸运的是,来自 Data 的列表总是 INT 并按升序排序。
解决方案
假设您只在给定查询中查找“查找数据”结果之一,您可以为此使用 LIKE。但是您需要在每个数字之前和之后使用一些分隔符才能使其起作用;我要使用;
. 所以要找到“1,2”:
select group_concat(Set order by Set) as 'Matched Set'
from list_of_data
where concat(';',replace(Data,',',';;'),';') LIKE '%;1;%;2;%';
这里我们改变每一行的数据;例如,1,3,4
变成;1;;3;;4;
. 然后搜索您要查找的分隔数字,并%
允许在每个数字之前或之后使用其他数字。如果您无法1,2
在代码中将其翻译成此表单,则可以在查询中执行此操作,例如:
LIKE concat('%;',replace('1,2',',',';%;'),';%')
推荐阅读
- html - 移除带有动画的 CSS 类后转换为默认类
- java - Spring Boot JPA 数据:服务层方法没有正在进行的事务异常
- .net - Visual Studio 2019 16.8.0 卸载了最新的 3.1 SDK 并且 global.json 不再工作
- python - KeyError的Python原因
- python - 如何在python的类中更改部分函数?
- c# - ValueType 上的“InstanceMethod()”和“StaticMethod(ref Type self)”之间的区别?
- javascript - 从 MYSQL 文件中删除注释
- mysql - MySQL 单一查询来确定测试/答案的匹配记录和百分比
- python - 以下python代码没有输出
- python - 试图将数组列表转换为数组