关于SQLserver的字符串怎么转换为表的列名的问题

博主分享了如何使用T-SQL将字符串转换为表的列名,以便在数据库操作中更方便地处理数据。通过创建一个存储过程`add_gpa`,实现了根据姓名和课程自动更新学生绩点的功能。存储过程中利用`exec()`函数解决了将字符串动态转化为列名的难题。博主希望能进一步探讨如何通过触发器优化这个过程。
摘要由CSDN通过智能技术生成

  最近学了下数据库,为了练习下T-SQL,也是为了管理班级的需要,有所有课程学生绩点(S#,姓名,课程名。。。)与学生每门课程绩点(S#,课程,绩点)两个表,我先将数据统计于表一中,由于有时从第一个表向第二个表插入些个别数据时,或者更新些数据时有点麻烦,于是就想能不能一步完成,我就摸索创建了个存储过程,完成了目标。

T-SQL如下:

CREATE procedure [dbo].[add_gpa] @姓名 char(20),@课程 char(20),@绩点 float as
declare @学号 char(20)
begin 
select @学号=a.S# from 学生所有信息 a where a.Sname=@姓名      //从学生信息表中通过姓名获得学号
select @学号
exec('update 所有课程学生绩点  set '+@课程+ '='+ @绩点+ ' where S#='+@学号)
update 学生每门课程绩点 set gpa=@绩点 where S#=@学号 and subject= @课程
end

GO

   实质上,困难点就在怎么将字符串变为列名,经过尝试后用exec(),可以解决这个问题,网上搜到的解决方案。

SQL code
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值