使用逗号分隔的字符串从表中选择

时间:2015-08-08 11:39:43

标签: sql sql-server sql-server-2008

我有一个用户表,我们在其中存储用户的技能,这是一个逗号分隔的ID,这些是技能表的主键

'2,3,4,5'

我有一个搜索页面,我们必须使用多次输入的技能进行搜索,数据是这样的

'2,3' or '3,4' or '6,7' or '2'

我的问题是如何编写where条款请任何人帮忙 提前谢谢

2 个答案:

答案 0 :(得分:3)

评论太长了。

您的数据库结构应该是固定的。您需要一个名为UserSkills的联结表,每个用户和每个ID都有一行。

以下是一些原因:

  • 数字存储为字符串是一个坏主意。您应该使用适当的基础类型。
  • 你的技能可能被引用到另一张表中。外键引用需要与它们引用的内容类型相同。
  • SQL非常支持表格和对字符串的平庸支持,因此您应该使用适当的数据结构。

答案 1 :(得分:0)

尽管这不是在dabase中存储forign键的正确方法。但是,根据您的问题,您可能想要这样做。

SELECT * FROM tbl_user WHERE skill LIKE '%2, 3%';