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

2022-11-04数据库问题
7

本文介绍了查询以查找子字符串的所有匹配行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

这是包含我的 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

  1. 如果搜索技能是列中的第一个技能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

这篇关于查询以查找子字符串的所有匹配行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

Mysql目录里的ibtmp1文件过大造成磁盘占满的解决办法
ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致...
2025-01-02 数据库问题
151

按天分组的 SQL 查询
SQL query to group by day(按天分组的 SQL 查询)...
2024-04-16 数据库问题
77

SQL 子句“GROUP BY 1"是什么意思?意思是?
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)...
2024-04-16 数据库问题
62

MySQL groupwise MAX() 返回意外结果
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)...
2024-04-16 数据库问题
13

MySQL SELECT 按组最频繁
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)...
2024-04-16 数据库问题
16

在 Group By 查询中包含缺失的月份
Include missing months in Group By query(在 Group By 查询中包含缺失的月份)...
2024-04-16 数据库问题
12