sqlserver 尋找某個字元在字串中第N次出現的位置

來源:互聯網
上載者:User

標籤:

前幾天的考試系統出現了一個問題,背景大概就是告訴你正確答案,比如說是:答案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)
第三步:
封裝成預存程序。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

sqlserver 尋找某個字元在字串中第N次出現的位置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.