在sql server数据库中查询一个用逗号分隔的字段的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在sql server数据库中查询一个用逗号分隔的字段的问题相关的知识,希望对你有一定的参考价值。

通过一个具体例子来描述:
在页面上有一个支持多选的select控件,其值分别为a b c d。现在选中a和c,则从页面上得到的值为a,c(注意,中间有一个逗号作为分隔符),现在要从sql server数据库中选出含有任意一个选中的字段的值,表结构如下:

表A字段:
ID 字段1
1 a,b
2 b,c
3 a,b,c,d
4 b,d
5 b
6 d
7 b,c
8 c,d
现在期望选出的记录为
ID 字段1
1 a,b
2 b,c
3 a,b,c,d
7 b,c
8 c,d
即在字段1中含有任意a或c的记录全部选择出来,但是这个逗号(,)不知道如何处理,用sql语句实现,请高手指点。是不是sql sever内部有这类的字符串处理函数?请写出具体的sql语句,形式最好为select * from A where 字段1
谢谢!
可能我还没有把问题描述清楚,a,c只是我举得一个例子,查询项是不固定的,如可能为a,也可能为a,c,d 还可能为a,b,c,d等等,这种情况该如何处理?好像用union操作不可以吧,我觉得应该从字符串处理的角度入手,有没有哪位高手知道啊,着急,在线等,谢谢啊。

你说的是选出含有任意一个选中的字段的值,那只要字段1的内容不是空或者null就行了啊。如果是待条件查询的话,只要加上你的条件就好了啊.
declare @a char(10)
set @a = \'a\' --任意你想要的查询的值
select * from 表 where 字段1 like \'%\' + @a + \'%\'
结果就是根据你给出的条件,检索出所有符合你条件的记录。
参考技术A select * from tb where 字段1 like '%a%'
union
select * from tb where 字段1 like '%c%'
参考技术B select * from tb where ','||字段1||',' like '%,a,%'
union
select * from tb where ','||字段1||',' like '%,c,%'
参考技术C select * from tb where 字段1 like '%a%'
union all
select * from tb where 字段1 like '%c%'

Sql Server实现多行数据按分组用逗号分隔成一行数据

select PID,uanme=(
select uname+‘,‘ from gz where gz.PID=a.PID for XML path(‘‘)
) From gz as a
group by PID

技术分享

 

以上是关于在sql server数据库中查询一个用逗号分隔的字段的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 SQL Server 将逗号分隔的文本转换为多列结果

此查询对创建逗号分隔列表 SQL Server 做了啥?

SQL Server用逗号分隔[重复]

如何在 SQL Server 2005 中将多行组合成以逗号分隔的列表?

Sql Server实现多行数据按分组用逗号分隔成一行数据

SQL Server 2012 列到单行,用逗号分隔