/*
author:daiyueqiang
date :2009-11-8
comment:拆分列(ID的集合)的字符串,根據拆分結果查詢所對應ID的名稱
*/
--建測試表
if object_id('RoleList') is not null
drop table RoleList
go
create table Rolelist
(
id int,
rolename varchar(50)
)
go
if object_id('UserList') is not null
drop table UserList
go
create table UserList
(
id int,
username varchar(50),
rolelist varchar(50)--可以屬於多個角色
)
go
--建測試數據
insert into RoleList
select 1,'教師' union all
select 2,'高級教師' union all
select 3,'講師' union all
select 4,'教授'
insert into UserList
select 1,'張三','1,2' union all
select 1,'李四','1,2,3' union all
select 1,'王五','1,4' union all
select 1,'趙六','1,3,4'
go
--根據ID列表獲得名稱列表
create function GetNameList(@idList varchar(50),@seprate char(1))
returns varchar(500)
as
begin
--名稱列表
declare @nameList varchar(500)
declare @start int
declare @end int
declare @length int
set @nameList='';
set @start=1;
set @end=charindex(@seprate,@idList)
set @length=len(@idList)
while @length>=0
begin
set @nameList=@nameList+dbo.GetName(substring(@idList,@start,@end-1))+','
set @length=@length-@end;
set @start=@end;
set @idList=substring(@idList,@end+1,@length)
set @end=charindex(@seprate,@IDList)
if @end=0
begin
if len(@idList)>0
set @nameList=@nameList+dbo.GetName(@idList)
break;
end
end
return @namelist;
end
go
create function GetName(@id varchar(50))
returns varchar(50)
as
begin
--名稱
declare @name varchar(50)
select @name=rolename from RoleList where id=@id
return @name
end
go