我遇到了一种搜索情况,但不确定如何处理。我正在搜索一组列,例如一个字符串
Row 1: Column Content: 7;15;25
Row 2: Column Content: 5
Row 3: Column Content: 5;7
但我想要只有 5 的行
示例:从列如“%5%”的表中选择 *
这种情况的问题是,当我只需要第 2 行和第 3 行时,查询将返回所有行
我可以对查询做些什么来让我返回所需的结果。
我非常感谢您的帮助。如果问题有任何困惑,我很乐意澄清。
最佳答案
怎么样:
SELECT * FROM MyTable WHERE
CONTENT LIKE '5;%' -- Starts with 5
OR CONTENT LIKE '%;5;%' -- 5 in the middle somewhere
OR CONTENT LIKE '%;5' -- Ends with 5
OR CONTENT = '5'; -- 5 is the only item in the list
您还可以将其简化为:
SELECT * FROM MyTable WHERE concat(';',CONTENT,';') LIKE '%;5;%';
这两种解决方案都可能会导致性能相当差,特别是当您的表很大时。为了解决这个问题,我建议规范化这些数据并将每个选择存储为另一个表中的一行。
关于MYSQL 使用 LIKE 进行特定搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17841004/