1

ユーザーがテーブル内のすべてのエントリを検索できるフォームがあり、特定のエントリに問題があります。

理解を深めるために例を挙げます。

ユーザーは 1、2、3、4、5 の 5 つのボックスをチェックでき、すべてのボックスをチェックします。

特定の行の値が「1|2|3」の場合、検索クエリはそれを見つけられません。

事前に、php (配列) でポスト変数を取得し、すべての値の前後に「%」を追加します。この場合: '%1%2%3%4%5%'

私の検索クエリ:

SELECT id FROM table WHERE string LIKE '%1%2%3%4%5%'

この場合、値が '1|2|3' の行は見つかりません。この方法は正常で、逆の場合はうまく機能すると思いますが、元の文字列の一部に一致するクエリを実行したいと考えています。私の場合、「%1%2%3%4%5%」は「1|2|3」に一致します。

これどうやってするの?

お時間を割いていただきありがとうございます。

編集:複数のAND、OR演算子なしでこれを行うことはできますか?

4

3 に答える 3

0

よりセクシーで効率的なものを見つける前に、次を使用できます。

SELECT id FROM table WHERE string LIKE '%1%' OR string LIKE '%2%' OR string LIKE '%3%' OR string LIKE '%4%' OR string LIKE '%5%'
于 2012-05-04T13:03:26.147 に答える
0

私は言います-likeを使用しないでください、部分文字列または同様の関数を使用してください。

于 2012-05-04T13:03:39.533 に答える
0

これを次のように変更します。

string LIKE '%1%'
  OR
string LIKE '%2%'
  OR
string LIKE '%3%'
  ...

これで問題は解決しますが、データベースの正規化を検討する必要があります(この場合、5 つの異なるフラグを 1 つのフィールドにまとめるのではなく、5 つの異なる設定に対して 1/0 として保存します)。

于 2012-05-04T13:10:59.177 に答える