我一直在尝试在 mysql 中编写一个简单的关键字比较查询,但由于某种原因,全数字关键字与全数字搜索词不匹配。
我有一个产品表、一个关键字表和一个连接表。为了使事情更简单,我使用了一个执行连接的视图,为我提供了每个产品 ID 的关键字字符串的简单列表。特别是 1 个产品有 4 个关键字,“John”、“Deere”、“8000”、“Midroller”,这些关键字在视图中和加入时会正确显示。
我遇到麻烦的地方是 (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 Query 似乎没有输出期望,但我试图将它们作为字符串而不是数字进行比较。
甚至尝试
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,因为在这个阶段我想让搜索保持相当严格的限制。
有什么明显的我做错了吗?