2016-11-03 5 views
0

2つの列から特定の単語を検索する必要がありますが、1つの列では前に*文字を検索する必要があります。だから私はSELECT * FROM table_name WHERE status = 'Enable' AND topic LIKE '%car%' OR category LIKE '%car%'を使用しました。今ではカテゴリ列には単語 eがありますので、それは美しさの列も戻っています。言葉が最初のものになる前にそれを戻す必要があります。MySql特定の文字の前にはどこですか?

+--------+---------------------------------------------------------------------------+---------+ 
| topic | category                 | status | 
+--------+---------------------------------------------------------------------------+---------+ 
| car | cars & vechicles*cars*             | Enabled | 
+--------+---------------------------------------------------------------------------+---------+ 
| beauty | Fashion, Health & Beauty*Health and Beauty Products*Body Care/Skin Care | Enabled | 
+--------+---------------------------------------------------------------------------+---------+ 
+0

前に「のような音frist * "はあなたが現在持っているデータに非常に特有の解決策です。将来的に「ケア&ビューティ」をカテゴリーに入れるとどうなりますか?または「オスカー賞を受賞した映画」?車や車を一言で探すのは好きではありませんか? – Galz

+0

また、これを読んでください:http://dev.mysql.com/doc/refman/5.7/en/regexp.html – Galz

+0

"ケア&ビューティー"が最初に*問題ありません。それは結果を返すことができます – user466061

答えて

1

このクエリでは、あなたの問題を解決する必要があります。

SELECT * FROM table_name WHERE 
status = 'Enable' AND topic LIKE '%car%' OR SUBSTRING_INDEX(category,'*',1) LIKE '%car%' 
0

あなたは、このような「%※」追加することによって、あなたのクエリに簡単な変更を行うことができます。

SELECT * FROM table_name WHERE status = 'Enable' AND topic LIKE '%car%' OR category LIKE '%car%*%' 
+0

「ファッション、ヘルス&ビューティー*ボディケア/スキンケア*何か」というカテゴリではこれは期待どおりに機能しません。 **最初の** *の前にのみ見えるようにする要求には対処しません。 – Galz

関連する問題