【发布时间】:2020-09-24 15:19:53
【问题描述】:
我有一个候选表。其中,我有一个名为技能的列。它使用分隔符存储多个值。现在我想创建一个包含技能的搜索过滤器。我该怎么做?
提前谢谢你。
【问题讨论】:
-
通过重新设计您的表以遵守规范化约定,以便您可以使用 RDBMS 的功能!为什么要这样存储技能?
标签: mysql sql csv where-clause
我有一个候选表。其中,我有一个名为技能的列。它使用分隔符存储多个值。现在我想创建一个包含技能的搜索过滤器。我该怎么做?
提前谢谢你。
【问题讨论】:
标签: mysql sql csv where-clause
在 MySQL 中,一个选项使用find_in_set():
select * from candidates where find_in_set(?, skills)
? 代表您搜索的技能。
也就是说,一个更好的选择是规范化您的架构。您不应该在单个列中存储多个值。相反,您应该有一个单独的表来存储候选人和技能之间的关系,每个候选人/技能元组位于单独的行中。
推荐阅读:Is storing a delimited list in a database column really that bad?
【讨论】: