SQL问题中的模式匹配 - 用PHP查找正确的查询

时间:2010-10-14 13:43:06

标签: php sql pattern-matching

我需要一些关于匹配数据库中字段的快速帮助,该字段存储我的在线商店的所有“父”类别。以下是我的“父母”如何通过一个名为 Parent 的字段存储在表中的示例:

男士男士 - 男士 - 男士衬衫男士 - T恤

以下是我在PHP中执行调用的查询:

$query = "SELECT id FROM $usertable where parent like '".strtoupper($parent)."'";

问题是,如果我使用的是MENS-BRANDS,这也会返回列在其他所有类别中的产品,因为它包含“MENS”字样。由于所有父项都存储在一个字段中,如何使我的SQL查询只识别字段本身中的空格分隔的每个物理单词,而不是尝试在整个字段中查找单词的不同片段的每个实例?

我希望这是有道理的,任何帮助都一定会受到赞赏。

1 个答案:

答案 0 :(得分:0)

理想情况 您可以更改架构,以便有一个单独的表格将这些类别与现有条目相关联。这样,每个产品可以有一行,您可以轻松编写SQL查询,查找所需的特定单词,而无需LIKE匹配。额外奖励:这将提高性能。

但是,如果您绝对无法更改此架构,最好的选择可能是使用正则表达式,例如WHERE parent REGEXP '[[:<:]]MENS[[:>:]]'

我在这里使用MySQL正则表达式。如果您正在使用不同的数据库管理系统,则相同的概念将起作用,但确切的语法可能会有所不同。