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

SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口。 它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。    结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。    美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。    SQL语言包含4个部分:    数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。    数据查询语言(DQL),例如:SELECT语句。    数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。    SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值