网站链接: HDHCMS 散文随笔
当前位置: 首页 >>数据库 >>MSSQL >>MSSQL实战 >>sqlserver 查找某个字符在字符串中第N次出现的位置

sqlserver 查找某个字符在字符串中第N次出现的位置

2018/12/5 11:04:02 0人评论 181次

sqlserver 查找某个字符在字符串中第N次出现的位置,前几天的考试系统出现了一个问题,背景大概就是告诉你正确答案,比如说是:答案1#答案2#答案3...而几百个学生答题的记录也是这样格式存储的,问如何用sql语句为每个学生判分?…

前几天的考试系统出现了一个问题,背景大概就是告诉你正确答案,比如说是:答案1#答案2#答案3...而几百个学生答题的记录也是这样格式存储的,问如何用sql语句为每个学生判分?

思路:

第一步:找到第N个#在字符串中的位置

create function fn_find(@find varchar(8000), @str varchar(8000), @n smallint)

    returns int

as

begin

    if @n < 1 return (0)

    declare @start smallint, @count smallint, @index smallint, @len smallint

    set @index = charindex(@find, @str)

    if @index = 0 return (0)

    else select @count = 1, @len = len(@find)

    while @index > 0 and @count < @n

        begin

            set @start = @index + @len

            select @index = charindex(@find, @str, @start), @count = @count + 1

        end

    if @count < @n set @index = 0

    return (@index)

end

go

第二步:

截取学生第N道题的答案和正确答案第N道题做比较,把做对的人的分数加1。

update dbo.T_dxyysyj_BankedCloze2_Record 

set Fraction =Fraction +1 

where QuestionID ='3' and SUBSTRING(ExamAnswer,dbo.fn_find(@find,@str,@mystart)+1,@mylength)=SUBSTRING(@str,dbo.fn_find(@find,@str,@mystart)+1,@mylength)

第三步:

封装成存储过程。

--------------------- 

作者:彭薄 

来源:CSDN 

原文:https://blog.csdn.net/cxl0921/article/details/46495125 

版权声明:本文为博主原创文章,转载请附上博文链接!


相关文章

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-4 http://www.yuyanba.com