日期:2014-05-18  浏览次数:20466 次

请问如何将"1,2,3,"替换成对应ID的文本"张三,李四,王五"
我有一张明星表
F_ID  F_Name
1   刘德华
2   梁咏琪
3   李嘉欣
还有一张电影表
F_ID  F_FilmName  F_StarID
1   黑马王子   1,3,
2   向左走向右走  2,
电影表中的F_StarID是与明星表的F_ID关联的,明星表中对应演员的ID用“,”分割
现在可不可以用一条sql语句查出电影表的如下结果
F_ID  F_FilmName  F_StarID
1   黑马王子   刘德华,李嘉欣,
2   向左走向右走  梁咏琪,

------解决方案--------------------

create table A(F_ID int, F_Name varchar(10))
insert A select 1, '刘德华 '
union all select 2, '梁咏琪 '
union all select 3, '李嘉欣 '

create table B(F_ID int, F_FilmName varchar(50), F_StarID varchar(20))
insert B select 1, '黑马王子 ', '1,3, '
union all select 2, '向左走向右走 ', '2, '


create function fun(@F_StarID varchar(20))
returns varchar(200)
as
begin
declare @re varchar(200)
set @re= ' '
select @re=@re+F_Name+ ', '
from A
where charindex( ', '+rtrim(F_ID)+ ', ', ', '+@F_StarID)> 0

return @re
end

select F_ID, F_FilmName, F_StarID=dbo.fun(F_StarID)
from B

--result
F_ID F_FilmName F_StarID
----------- -------------------------------------------------- -------------------------
1 黑马王子 刘德华,李嘉欣,
2 向左走向右走 梁咏琪,

(2 row(s) affected)