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 に答える