問題描述
這是包含我的 skills
C,C++
P,H,D
ASP,.net,C,C#,C++,R+
C++
我需要找到所有包含 C
的條目.所以我使用 Skills LIKE ('%'+@Skill+'%')
格式化了一個查詢,當我只想得到結果時,這給了我所有條目,包括 C++
C
單獨的.
I need to find all entries that contain C
. So I formatted a query by using Skills LIKE ('%'+@Skill+'%')
and this gives me all entries including C++
when I just want to get the result of C
alone.
從上面的例子中搜索,我只能得到 C,C++
和 ASP, .net, C, C#, C++, R+
行.我不能得到 C++
- 結果集中的最后一行.
Searching from the above example, I must only get C,C++
and ASP, .net, C, C#, C++, R+
rows. I must not get C++
- last row in the resultset.
我的要求是,在搜索 C
而不是 C++
時,我只需要獲取 C
.如何格式化此類查詢?
My requirement is that I need to get only C
when searching for C
and not C++
. How do I format such a query?
我正在使用存儲過程來執行所有查詢.
I am using stored procedures to execute all the queries.
推薦答案
可以根據這些條件進行過濾
You can filter based on these conditions
如果搜索技能是列中的第一個技能
Skills LIKE @Skill +',%'
如果搜索技能位于中間Skills LIKE '%,'+ @Skill+',%'
如果搜索技能在最后Skills LIKE '%,' + @Skill
如果搜索技能是唯一的技能 Skills = @Skill
if search skill is the only skill Skills = @Skill
查詢
SELECT ...
WHERE Skills LIKE '%,'+ @Skill+',%'
OR Skills LIKE @Skill +',%'
OR Skills LIKE '%,' + @Skill
OR Skills = @Skill
編輯
另一個較短的查詢可以是
Another shorter query can be
SELECT ...
WHERE ',' + Skills + ',' LIKE '%,'+ @Skill+',%'
注意::您可能會遇到此類設計和查詢的性能問題.如果可能,請考慮創建一個技能表來保存用戶的所有技能.請參閱 Zohar Peled 關于如何改進您的設計的回答
Note:: You may face performance issues with such a design and query. If possible look into creating a skills table to hold all skills for a user. Please see Zohar Peled's answer on how to improve your design
這篇關于查詢以查找子字符串的所有匹配行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!