因为要视图,所以只有用下面这样麻烦的方法 先建立函数 create function getstr(@s varchar(500),@char varchar(2),@loc int) returns varchar(50) begin declare @ret varchar(50),@i int while @loc>1 and @s<>'' select @i=charindex(@char,@s),@s=(case @i when 0 then '' else substring(@s,@i+1,len(@s)-@i) end),@loc=@loc-1 select @i=charindex(@char,@s),@ret=case @i when 0 then @s else left(@s,@i-1) end return @ret end 然后建立视图 create view va as select * from (select courseinfo,coursename,point,dbo.getstr(bjjh,',',1) bjjh from a union select courseinfo,coursename,point,dbo.getstr(bjjh,',',2) bjjh from a union …… select courseinfo,coursename,point,dbo.getstr(bjjh,',',10) bjjh from a) t where bjjh<>'' /*结果 -------------------- -------------------- -------------- -------------------- 0101011002_1_1 岩浆岩及变质岩石学_ 80.05 地质03-1 0101011002_1_1 岩浆岩及变质岩石学_ 80.05 地质03-2 0101011003_1_1 岩浆学_理论 90.50 地质03-1 0101011003_1_1 岩浆学_理论 90.50 地质03-2(所影响的行数为 4 行) */
兄弟:这个库谁设计的?该打啊!
sherryxuehua() ( ) 信誉:100 Blog 2006-12-21 19:37:01 得分: 0
有最大值10,所有的都<=10,但是不定,所以麻烦这位hinco(桃色德鲁依) 帮小女想想办法了,大谢啊!
-------------------
看来得改成 小MM,谁设计的库啊 ?麻烦!
先建立函数
create function getstr(@s varchar(500),@char varchar(2),@loc int)
returns varchar(50)
begin
declare @ret varchar(50),@i int
while @loc>1 and @s<>'' select @i=charindex(@char,@s),@s=(case @i when 0 then '' else substring(@s,@i+1,len(@s)-@i) end),@loc=@loc-1
select @i=charindex(@char,@s),@ret=case @i when 0 then @s else left(@s,@i-1) end
return @ret
end
然后建立视图
create view va
as
select * from
(select courseinfo,coursename,point,dbo.getstr(bjjh,',',1) bjjh from a
union
select courseinfo,coursename,point,dbo.getstr(bjjh,',',2) bjjh from a
union
……
select courseinfo,coursename,point,dbo.getstr(bjjh,',',10) bjjh from a) t
where bjjh<>''
/*结果
-------------------- -------------------- -------------- --------------------
0101011002_1_1 岩浆岩及变质岩石学_ 80.05 地质03-1
0101011002_1_1 岩浆岩及变质岩石学_ 80.05 地质03-2
0101011003_1_1 岩浆学_理论 90.50 地质03-1
0101011003_1_1 岩浆学_理论 90.50 地质03-2(所影响的行数为 4 行)
*/
我现在的表里的记录的班级数是不定的,全用这样的union不知道会不会影响速度,当数据大的时候?现在我的数据很少,这个方法倒是很好用,谢谢你啦:),有时间能不能帮我再想想简化的方法?