0

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

Row 1: Column Content: 7;15;25
Row 2: Column Content: 5
Row 3: Column Content: 5;7

但我想要只有 5 个的行

例子:Select * from table where column like '%5%'

这种情况的问题是,当我只需要第 2 行和第 3 行时,查询将带回所有行

有什么我可以对查询做的事情,让我带回想要的结果。

我将非常感谢您的帮助。如果问题有任何混淆,我会很乐意澄清。

4

1 回答 1

1

怎么样:

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;%';

这两种解决方案都可能导致性能相当差,尤其是在您的表很大的情况下。为了解决这个问题,我建议规范化这些数据并将每个选择作为一行存储在另一个表中。

于 2013-07-24T17:38:07.877 回答