转学一个CSDN群友的好问题案例!!!关于把科目属性用数字替换如下:
2006-09-29 06:28
585 查看
有一个表,数据是学生选课情况,例如:
姓名: 科目:
张三 语文
李四 数学
王五 历史
西的 数学,历史
似的 化学
地方 语文,化学
等等,
我想将科目用编号代替,结果如下:
姓名: 科目:
张三 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,'英语')
然后根据如下函数更新学生选课表:
create function fGetSubject(@subject varchar(1000)) -----------对应于课目可有,如一个人有数学,语文等
as
return varchar(100) ------返回类型
begin
declare @str varchar(100) ---------对应于返回值类型,
set @str='' ----------记住这里不是空字符,面是双紧团引号如:‘’,而不是' '
select @str=@str+','+rtrim(clsid) -----加',',形成结果为:1,2,3之类的结果 (circlex)
from cls
where charindex(clsname ,@subject)>0 -------------为了只找出表中有科目与FUNCTION匹配时,才处理------(circlex)
select @str=stuff(@str,1,1,'') ----截取第一个‘,’,而形成结果为1 或1,2,3(而不是,1或,1,2,3)
return @str ---------返回值
end
update 学生选课表 set 科目=dbo.fGetSubject(科目) ----------用FUNCTION更新表中数据
注:两个(circlex)间的语句对FUNCTION的@subject进行处理
姓名: 科目:
张三 语文
李四 数学
王五 历史
西的 数学,历史
似的 化学
地方 语文,化学
等等,
我想将科目用编号代替,结果如下:
姓名: 科目:
张三 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,'英语')
然后根据如下函数更新学生选课表:
create function fGetSubject(@subject varchar(1000)) -----------对应于课目可有,如一个人有数学,语文等
as
return varchar(100) ------返回类型
begin
declare @str varchar(100) ---------对应于返回值类型,
set @str='' ----------记住这里不是空字符,面是双紧团引号如:‘’,而不是' '
select @str=@str+','+rtrim(clsid) -----加',',形成结果为:1,2,3之类的结果 (circlex)
from cls
where charindex(clsname ,@subject)>0 -------------为了只找出表中有科目与FUNCTION匹配时,才处理------(circlex)
select @str=stuff(@str,1,1,'') ----截取第一个‘,’,而形成结果为1 或1,2,3(而不是,1或,1,2,3)
return @str ---------返回值
end
update 学生选课表 set 科目=dbo.fGetSubject(科目) ----------用FUNCTION更新表中数据
注:两个(circlex)间的语句对FUNCTION的@subject进行处理
相关文章推荐
- 今天在csdn上遇到一个问题,是关于sql数据行列转换的,我的写法如下:
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 一个问题是有关于用js去替换htm指定标签之间的内容
- 关于js修改css属性的一个小问题
- 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行
- 关于csdn博客的一个小问题
- 建议:关于CSDN “首页头条”的一个细节问题
- 关于打印一个有趣的数字图形的问题
- 转群友一个关于显示了分组方式下问题!!!!
- 关于csdn博客的一个小问题
- 问题描述如下: 有2.5亿个整数(这2.5亿个整数存储在一个数组里面,至于数组是放在外存还是内存,没有进一步具体说明); 要求找出这2.5亿个数字里面,不重复的数字的个数; 另外,可用的内存限定为600M; 要求算法尽量高效,最优;
- 关于《Java编程思想》注解篇的一个案例所遇到的疑惑-apt参数的问题
- 关于csdn博客的一个小问题
- 关于一个《System.Windows.Markup.XamlParseException Message=设置属性“”时出现异常》问题的解决
- 问一个关于反射中,属性字段的问题
- JavaScript中记一个关于对象属性赋值的小问题
- 关于面试常见的一个数组中找出出现一次的几个数字的问题
- CSDN关于数字签名的问题
- 关于csdn博客的一个小问题
- 关于csdn博客的一个小问题