mysql で単純なキーワード比較クエリを作成しようとしましたが、何らかの理由で、すべて数字のキーワードがすべて数字の検索用語と一致しません。
製品のテーブル、キーワードのテーブル、結合テーブルがあります。簡単にするために、結合を実行するビューを使用して、製品 ID ごとのキーワード文字列の単純なリストを提供します。特に 1 つの製品には「John」、「Deere」、「8000」、「Midroller」の 4 つのキーワードがあり、これらはビューと結合時に正しく表示されます。
私が問題を抱えているのは、(keyword = "8000") が "8000" キーワードに当てはまらないことです。
例
SELECT a.id, kw.keyword AS keyword, (kw.keyword = 'John' OR
kw.keyword = 'Deere' OR
kw.keyword = "8000" OR
kw.keyword = 'Midroller') AS matched
FROM `kc5n2_product` AS a
INNER JOIN `product_keywords` AS kw ON a.id = kw.product
WHERE a.id =119
戻り値
id キーワードの一致 119 8000 0 119 ジョン 1 119 ディア 1 119 ミッドローラー 1
私はこれを見てきました: MySql: 数値である 2 つの文字列を比較しますか? しかし、それは本当に役に立ちませんでした。
また、このMySQLクエリは期待を出力していないようですが、数値ではなく文字列として比較しようとしています。
しようとしても
SELECT a.id, kw.keyword AS keyword, (CAST(kw.keyword as Char(4)) = CAST("8000" as Char(4))) AS matched
mysql に両方を文字列として強制的に解釈させようとしても、まったく役に立ちませんでした。
使用すると検索語に一致することがわかりました
kw.keyword LIKE "%8000%"
しかし、この段階では検索をかなり制限したいので、可能であれば LIKE を避けたいと思います。
私が間違っていることは明らかですか?