gpt4 book ai didi

sql - 查询以查找子字符串的所有匹配行

转载 作者:行者123 更新时间:2023-12-05 01:33:05 25 4
gpt4 key购买 nike

这是包含我的 skills

行条目的列
C,C++
P,H,D
ASP,.net,C,C#,C++,R+
C++

我需要找到所有包含 C 的条目。所以我使用 Skills LIKE ('%'+@Skill+'%') 格式化了一个查询,当我只想得到结果时,这给了我所有的条目,包括 C++ C 单独的。

从上面的例子中搜索,我必须只得到 C,C++ASP, .net, C, C#, C++, R+ 行。我不能得到 C++ - 结果集中的最后一行。

我的要求是在搜索 C 时只需要获取 C 而不是 C++。如何格式化这样的查询?

我正在使用存储过程来执行所有查询。

最佳答案

您可以根据这些条件进行过滤

  1. 如果搜索技能是列中的第一个技能 Skills LIKE @Skill +',%'

  2. 如果搜索技能在中间的任何位置Skills LIKE '%,'+ @Skill+',%'

  3. 如果搜索技能在末尾Skills LIKE '%,' + @Skill

  4. 如果搜索技能是唯一的技能Skills = @Skill

查询

SELECT ...
WHERE Skills LIKE '%,'+ @Skill+',%'
OR Skills LIKE @Skill +',%'
OR Skills LIKE '%,' + @Skill
OR Skills = @Skill

编辑

另一个较短的查询可以是

SELECT ...
WHERE ',' + Skills + ',' LIKE '%,'+ @Skill+',%'

注意::您可能会遇到此类设计和查询的性能问题。如果可能,请考虑创建一个技能表来保存用户的所有技能。请参阅 Zohar Peled 关于如何改进设计的回答

关于sql - 查询以查找子字符串的所有匹配行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30660263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com