我有SQL server 2008 r2版本,正在开发,.Net
网页作为前端。
出现问题,数据库中有一列基本上由逗号分隔的各种技能组成。例如,一些候选人具有3种不同的技能组,即C#
,SQL server
,Oracle
。想要列出具有C#
和Oracle
技能的候选人的用户将在网页上的文本框中提供输入C#, Oracle
。我想写一个可以列出这样的查询。我尝试过自由文本搜索。但是如果用大写/小词,不支持通配符,甚至是技能的顺序,都无法获取。
以下是示例查询
Select * from profiles where freetext(skills, ‘C#,Oracle’)
答案 0 :(得分:11)
从我的POV中,正确(和不受欢迎)的答案是重新设计您的表结构:如果您想要单独访问它们,您应该永远不会在单个字段中列出值列表。
答案 1 :(得分:0)
免责声明:我同意@EugenRieck(该答案为+1) - 在一个字段中填充CSV字符串是糟糕的设计。
但如果你必须...... look here first。或try a CLR solution。
答案 2 :(得分:0)
this是关于全文的好文章。
匹配两者 C#和Oracle
select * From Profiles where contains(*,'"Oracle" and "C#"')
匹配 C#或Oracle
select * From Profiles where contains(*,'"Oracle" or "C#"')