MySQL的字符串转换为表达

问题描述:

我有一个MySQL程序有状况:MySQL的字符串转换为表达

Where category like CONCAT("%",@category,"%") 

...这正常工作与单一类别。

现在我想与多个类别进行比较,我试图从PHP(字符串连接)建立字符串,但它不工作(在MySQL程序)。

我怎么能转换这个条件来匹配多个样表达?

+0

请粘贴您尝试过的字符串连接 – 2011-02-28 17:08:20

+0

您必须解释如何存储'category'值 - 看起来像将多个类别单词放入单个列(我们称之为“非规范化数据” - 不太好) – 2011-02-28 17:08:48

+0

如何http://*.com/questions/337704/parameterizing-a-sql-in-clause/337817#337817? – Konerak 2011-02-28 17:09:11

假设你的类别栏是这样的:“猫,狗,大象”;分隔关键字。有3个解决方案:

1)最丑陋的解决方案,可能是最糟糕:

WHERE category like CONCAT("%",@category1,"%") 
OR category like CONCAT("%",@category2,"%") 

但对于这个你应该知道你有多少个类别要去查询。这种方式可能不会工作。

2)如果你可以用full-text search functions来匹配类别字段MyISAM表这将是比第一种选择更为快速,整洁。

3)最好的办法是重新设计表结构有类别和主题项目(之间的关系表,因为它似乎是一个1-N的关系)

如果你可以提供一些定义(代码)和有助于理解的数据样本。