Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用逗号分隔字符串从表中选择_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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

Sql 使用逗号分隔字符串从表中选择,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个用户表,我们在其中存储用户的技能,这是一个逗号分隔的ID,如,这些是技能表的主键 '2,3,4,5' 我有一个搜索页面,在这个页面中,我们必须使用多输入的技能进行搜索,数据是这样的 '2,3' or '3,4' or '6,7' or '2' 我的问题是如何编写where子句请任何人帮助 提前感谢评论太长了 您的数据库结构应该是固定的。您需要一个连接表,称为类似于UserSkills,每个用户和每个id有一行 以下是一些原因: 将数字存储为字符串是个坏主意。您应该使用适当的底层类型

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

'2,3,4,5'
我有一个搜索页面,在这个页面中,我们必须使用多输入的技能进行搜索,数据是这样的

'2,3' or '3,4' or '6,7' or '2'
我的问题是如何编写
where
子句请任何人帮助
提前感谢

评论太长了

您的数据库结构应该是固定的。您需要一个连接表,称为类似于
UserSkills
,每个用户和每个id有一行

以下是一些原因:

  • 将数字存储为字符串是个坏主意。您应该使用适当的底层类型
  • 您的技能可能是另一个表中的参考。外键引用的类型必须与其所引用的对象相同
  • SQL对表的支持非常好,对字符串的支持一般,因此应该使用适当的数据结构

尽管这不是在dabase中存储外键的正确方法。然而,根据您的问题,您可能希望执行类似的操作

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

谢谢你的宝贵建议,我会试试那种方法