Insert 学生课程 Values(1, 1, N'高数')
Insert 学生课程 Values(2, 1, N'线代')
GO
--建立函数
Create Function GetCourse(@ID Int)
Returns Nvarchar(1000)
As
Begin
Declare @S Nvarchar(1000)
Set @S=''
Select @S=@S+'|'+Course from 学生课程 Where StudentID=@ID Order By PK
Return(Stuff(@S,1,1,''))
End
GO
--测试
Select *,dbo.GetCourse(ID) As Course from 学生信息
--删除测试环境
Drop Table 学生信息,学生课程
Drop Function GetCourse
--结果
/*
ID Name Course
1 张三 高数|线代
*/
insert into 学生课程 select 1,1,'高数'
insert into 学生课程 select 2,1,'线代'
--创建自定义函数
create function f_str(@ID int)
returns varchar(8000)
AS
begin
declare @ret varchar(8000)
set @ret = ''
select @ret = @ret+'|'+rtrim(Course) from 学生课程 where StudentID = @ID
set @ret = case when len(@ret)>0 then stuff(@ret,1,1,'') else @ret end
return @ret
end
--调用自定义函数执行查询
select
a.ID,a.Name,Course=dbo.f_str(a.ID)
from
学生信息 a
group by
a.ID,a.Name
/*
--输出查询结果
ID Name Course
---- ------ ---------
1 张三 高数|线代
*/
create function f_str(@ID int)
returns varchar(8000)
AS
begin
declare @ret varchar(8000)
set @ret = ''
select @ret = @ret+'|'+rtrim(Course) from 学生课程 where StudentID = @ID
set @ret = case when len(@ret)>0 then stuff(@ret,1,1,'') else @ret end
return @ret
end
select
a.ID,a.Name,Course=dbo.f_str(a.ID)
from
学生信息 a
group by
a.ID,a.Name