create table meeting(
id int identity(1,1) ,
meetinguser nvarchar(100)
)
create table userinfo(
id int identity(1,1) ,
username nvarchar(100)
)
insert into userinfo values('王尼玛');
insert into userinfo values('小尼玛');
insert into userinfo values('撸尼玛');
insert into userinfo values('尼美');
insert into meeting values('1,2,3,4');
meeting 表中的数据:
id meetinguser
1 1,2,3,4
想查询出来的效果是:
id meetinguser username
1 1,2,3,4 王尼玛,小尼玛,撸尼玛
这样的查询效果能实现么?
木有思路呢

------解决方案--------------------
-----------两表没关系的-----------------
SELECT A.*
,(SELECT username=stuff((SELECT ','+username FROM userinfo FOR XML PATH('')),1,1,'')) AS username
FROM meeting AS a
----------两表有关系的------------------
SELECT *
,(SELECT STUFF((SELECT ','+username
FROM userinfo AS A
JOIN (
SELECT
???? CAST(SUBSTRING(meetinguser,number,CHARINDEX(',',meetinguser+',',number)-number)AS?INT?)?AS?meetinguserID?
FROM
???? meeting?a,master..spt_values?
WHERE
???? number?>=1?and?number<=LEN(meetinguser)??
???? and?type='p'?
???? and?SUBSTRING(','+meetinguser,number,1)=','
And a.id=t.id
) AS B ON A.id=B.meetinguserID
FOR XML PATH('')),1,1,'')) AS username
FROM meeting AS t
------解决方案--------------------
with t as
(select a.id,a.meetinguser,c.username
from meeting a
inner join master.dbo.spt_values b
on b.[type]='P' and b.number between 1 and len(a.meetinguser)
and substring(','+a.meetinguser,b.number,1)=','
inner join userinfo c
on substring(a.meetinguser,b.number,charindex(',',a.meetinguser+',',b.number)-b.number)
=rtrim(c.id))
select a.id,a.meetinguser,
stuff((select ','+b.username
from t b
where b.id=a.id and b.meetinguser=a.meetinguser
for xml path('')),1,1,'') 'username'
from t a
group by a.id,a.meetinguser
/*
id meetinguser username
----------- -------------------- ---------------------------
1 1,2,3,4 王尼玛,小尼玛,撸尼玛,尼美
(1 row(s) affected)
*/