MYSQL 使用 LIKE 进行特定搜索

标签 mysql string search sql-like

我遇到了一种搜索情况,但不确定如何处理。我正在搜索一组列,例如一个字符串

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/

相关文章:

java - MySQL语法错误异常 : Error in SQL Syntax

java - 什么时候创建/销毁常量字符串?

javascript - 限制 XML 文件中回显的 Ajax 回复数量

MySQL自动递增不递增

mysql - 将平均月份值插入到另一个表中,但应防止当前月份平均值传递到表中

php - 用于查找某个字母之前或之后的字母的正则表达式

c++ - 在 vector 中存储字符串会导致错误

java - 将带有分隔符的字符串解析为数组

c# - 如何在 Sitecore 中配置 Lucene 以仅索引主数据库上项目的最新版本?

visual-studio - 从Visual Studio搜索中排除特定文件