sql字段里有逗号隔开的数据,怎么取值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql字段里有逗号隔开的数据,怎么取值相关的知识,希望对你有一定的参考价值。
table 1 :
id code
1 001
2 001,002
3 001,002,003
table 2:
code name
001 数学
002 体育
003 美术
要求结果
id name
1 数学
2 数学,体育
3 数学,体育,美术
sql字段有逗号隔开,数据取值的方法。
如下参考:
1.查询数据库表的所有字段,直接使用select语句,如下图。
2.查询数据库表部分的字段,可以使用select字段命令,从数据库表中选择字段名度。
3.根据查询的条件,在where之后使用条件,从数据库表中选择字段名所在的条件。
4.使用distinct命令查询数据库字段,以记录未重复的结果,如下图所示。
5.查询数据库表数据之前有多少条,可以使用top命令,从数据库表中选择*号。
6.查询数据库表有时为了区分字段,需要回答字段名,可以用as,从数据库表中选择字段名作为字段名。
参考技术A --测试数据with table1(id,code) as (
select 1,'001' union all
select 2,'001,002' union all
select 3,'001,002,003'),
table2(code,name) as(
select '001','数学' union all
select '002','体育' union all
select '003','美术')
--用charindex和for xml path实现批量替换的功能,适用于sql server 2005及以上版本
select table1.id,stuff((
select ','+table2.name from table2
where charindex(','+table2.code+',',','+table1.code+',')>0
order by table2.code
for xml path('')
),1,1,'') as name
from table1
结果:
结果:
参考技术C --分隔字符串ALTER function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100))
returns @temp table(F1 varchar(100))
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
GO
--模仿下面的函数 (你的需要一个表连接查询)
Create FUNCTION JoinString --合并字符串 多行合并为一行
(
@UserName varchar(50)
)
RETURNS varchar(8000)
AS
BEGIN
declare @Str varchar(8000)
set @Str = ''
select @Str = @Str +',' + ISNull(BuMenName,'') from ERPUserGuanliDept
where UserName = @UserName
if(@Str<>'')
set @Str=substring(@Str,2,len(@Str)-1)
return @Str
END
--使用时
select distinct UserName,dbo.JoinString(UserName) as DeptList from ERPUserGuanliDept 参考技术D 一样的取出来,只是取出来后是个字符串,要处理,用explode()函数分隔逗号就行了追问
请问具体怎么写?
MySQL 如何将Id相同的字段合并,并且以逗号隔开
数据库存的数据
sql: SELECT Id,GROUP_CONCAT(`Name` SEPARATOR \',\') NAMES FROM `stu` GROUP BY Id;
以上是关于sql字段里有逗号隔开的数据,怎么取值的主要内容,如果未能解决你的问题,请参考以下文章