我需要一些关于匹配数据库中字段的快速帮助,该字段存储我的在线商店的所有“父”类别。以下是我的“父母”如何通过一个名为 Parent 的字段存储在表中的示例:
男士男士 - 男士 - 男士衬衫男士 - T恤
以下是我在PHP中执行调用的查询:
$query = "SELECT id FROM $usertable where parent like '".strtoupper($parent)."'";
问题是,如果我使用的是MENS-BRANDS,这也会返回列在其他所有类别中的产品,因为它包含“MENS”字样。由于所有父项都存储在一个字段中,如何使我的SQL查询只识别字段本身中的空格分隔的每个物理单词,而不是尝试在整个字段中查找单词的不同片段的每个实例?
我希望这是有道理的,任何帮助都一定会受到赞赏。
答案 0 :(得分:0)
理想情况 您可以更改架构,以便有一个单独的表格将这些类别与现有条目相关联。这样,每个产品可以有一行,您可以轻松编写SQL查询,查找所需的特定单词,而无需LIKE
匹配。额外奖励:这将提高性能。
但是,如果您绝对无法更改此架构,最好的选择可能是使用正则表达式,例如WHERE parent REGEXP '[[:<:]]MENS[[:>:]]'
我在这里使用MySQL正则表达式。如果您正在使用不同的数据库管理系统,则相同的概念将起作用,但确切的语法可能会有所不同。