我遇到了一个我不确定如何接近的搜索情况。我正在搜索一组列,例如一个字符串
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行时,查询将带回所有行
我能用查询做些什么来让我恢复想要的结果。
我真的很感激你的帮助。如果对这个问题有任何疑惑,我会很高兴澄清。
答案 0 :(得分: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;%';
这两种解决方案都可能导致相当差的性能,特别是如果您的桌子很大。为了解决这个问题,我建议对这些数据进行标准化,并将每个选择作为一行存储在另一个表中。