2016-10-20 7 views
1

文字列の一部(単語、単語、単語、単語)を列の1つで検索しようとしています。 SQL InnoDB複数の列で1つのLIKE値がチェックされています

は私が
SELECT * FROM table WHERE LIKE '$string%' IN (col1, col2, col3, col4, etc) 

を試してみましたが、私は構文はLIK近くに間違っている私に言って、致命的なエラーが発生します。

これは可能ですか?もしそうなら、何がうんざりですか?

私が正しく理解していれば、文字列を爆発させ、foreachを使って別々にチェックすることができますか?

$array = explode(',', $string); 

foreach ($array as $string) 
SELECT * FROM table WHERE MATCH (col1, col2, col3, col4, etc) AGAINST $string) 
+0

は、 'FULLTEXT'を参照してください。 –

答えて

0

あなたは、いくつか使用して列または条件のためのような操作を行うことができ

SELECT * 
    FROM table 
    WHERE col1 LIKE concat($string.'%' or col1 LIKE concat('%','$string','%') 
    OR col2 LIKE concat($string.'%' or col2 LIKE concat('%','$string','%') 
    OR col3 LIKE concat($string.'%' or col3 LIKE concat('%','$string','%') 
    OR col4 LIKE concat($string.'%' or col4 LIKE concat('%','$string','%') 
    OR etc.... coln LIKE concat($string.'%' or coln LIKE concat('%','$string','%') 
+0

これは私に空の配列を与えました:('$ sting%' – tijgerkaars

+0

これは、文字列のいずれかの部分が列の項目と一致するかどうかを確認する必要がありますか?そうであれば、Pearが '$ ApplePearBread% – tijgerkaars

+0

あなたが提供したコメントが間違っています。カラム名ではなくカラムの内容をチェックすることができます。あなたの質問を更新してください。適切なデータサンプルと期待される結果を得てください。本当の問題を評価することができます – scaisEdge

0

は、あなたはこれを試すことができます:あなたは言葉だけを探している場合

SELECT * FROM table WHERE CONCAT(col1, ' , ', col2, ' , ' col3, ' , ', col4, ' , ', etc) LIKE '$string%' 
+0

あなたはconcatを使用する代わりにできません(col1、col2、col3、col4など)?とにかく入力しているからです。 – tijgerkaars

+0

空白と区切り文字を追加するには '、'を使用します。それ以外の場合は、列の文字列が一緒に接着され、結果が歪むことがあります。しかし、あなたは '、'を使わずにそれを試してみることができます。 – krasipenkov

関連する問題