SQL 判断选择题结果(多选题)

为了解决在线答题系统中多选题判分难题,本文介绍了一种自定义的SQL Server数据库函数。该函数能够精确地判断答题结果与标准答案的一致性,包括完全一致、部分一致及存在错误选项等不同情况。

        最近遇到一个新问题,同事做了个在线答题系统,单选题可以直接通过对比“答题结果”和“标准答案”来判断答案的正误,但是这种方法不适用于多选题,网上多选题的结果的判定方法很多种,但是直接用在数据库有一定的局限性,所以自己自定义了一个数据库函数来解决。

数据库:SQL Server

函数输入:DaTiJG(答题结果)BiaoZhunDA(标准答案)

函数输出:1、完全一致;2

                 2、部分一致,答案全对但是不全;1

                 3、有错误选项;0

函数详情:

Create function [dbo].[Judge](@DaTiJG nvarchar(300),@BiaoZhunDA nvarchar(300))
returns int --返回值类型
as
begin
declare @Result int --最终结果
if(@DaTiJG = @BiaoZhunDA)--完全一致
begin
set @Result = 2
end
else
begin

declare @Number int --循序用
declare @Temp varchar(3) ---储存单个答案
set @Number = 1;
while @Number < len(@BiaoZhunDA)
begin
set @Temp = SUBSTRING(@BiaoZhunDA,@Number,3)--取单个答案
set @DaTiJG = replace(@DaTiJG,@Temp,'')--将答题结果中的正确答案替换为空
set @Number = @Number + 4 --步长+4,如:002&
end
set @DaTiJG = replace(@DaTiJG,'&','')--替换答题结果中的&
if(@DaTiJG = '')--如果最终答题结果为空,则证明所有选项都在正确答案中,返回1
begin
set @Result = 1
end
else--否则说明选择了错误答案,返回0
begin
set @Result = 0
end
end
return @Result
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值