有一个表,数据是学生选课情况,例如:
姓名: 科目:
张三 语文
李四 数学
王五 历史
西的 数学,历史
似的 化学
地方 语文,化学
等等,
我想将科目用编号代替,结果如下:
姓名: 科目:
张三 1
李四 2
王五 3
西的 2,3
似的 4
地方 1,4
等等,
我该如何更改,才能实现上面的效果
问题补充:记录很多,而且科目不定,
问题是如何建科目表,条件是只给定选课表,在这基础上怎样取出科目再建科目表,而且每个科目都有一个固定的编号,然后再用这些编号替代选课表中的科目
姓名: 科目:
张三 语文
李四 数学
王五 历史
西的 数学,历史
似的 化学
地方 语文,化学
等等,
我想将科目用编号代替,结果如下:
姓名: 科目:
张三 1
李四 2
王五 3
西的 2,3
似的 4
地方 1,4
等等,
我该如何更改,才能实现上面的效果
问题补充:记录很多,而且科目不定,
问题是如何建科目表,条件是只给定选课表,在这基础上怎样取出科目再建科目表,而且每个科目都有一个固定的编号,然后再用这些编号替代选课表中的科目
Create table cls (clsid int,clsname varchar(10))
insert cls values(1,'语文')
insert cls values(2,'数学')
insert cls values(3,'英语')然后根据如下函数更新学生选课表:
as
return varchar(100)
begin
declare @str varchar(100)
set @str=''
select @str=@str+','+rtrim(clsid) from cls where charindex(clsname ,'语文,数学,生物')>0
select @str=stuff(@str,1,1,'')
--select @str
end
create function fGetSubject(@subject varchar(1000))
as
return varchar(100)
begin
declare @str varchar(100)
set @str=''
select @str=@str+','+rtrim(clsid) from cls where charindex(clsname ,'语文,数学,生物')>0
select @str=stuff(@str,1,1,'')
return @str
end
when 语句就可以全部改过来了
case when id =exp then 'expr' else ''end as alias
from tbname
先建好科目表,结构如下:
Create table cls (clsid int,clsname varchar(10))
insert cls values(1,'语文')
insert cls values(2,'数学')
insert cls values(3,'英语')然后根据如下函数更新学生选课表:
create function fGetSubject(@subject varchar(1000))
as
return varchar(100)
begin
declare @str varchar(100)
set @str=''
select @str=@str+','+rtrim(clsid) from cls where charindex(clsname ,@subject)>0
select @str=stuff(@str,1,1,'')
return @str
endupdate 学生选课表 set 科目=dbo.fGetSubject(科目)
update 学生选课表 set 科目 = replace(科目,'语文','1')
update 学生选课表 set 科目 = replace(科目,'数学','2')
update 学生选课表 set 科目 = replace(科目,'英语','3')
...这个方法比较傻瓜,但是比splory(爽儿)的好理解一点,呵呵。