zoukankan      html  css  js  c++  java
  • SQL某列数据的更新及SQL的case的复杂应用及字符串截取

       昨天遇到一个复杂的问题,想了一下午,终于在晚上的时候把这个问题解决了,所以记录一下,以备以后的回顾。

           首先呢,数据库中有一列数据‘档位’是由主键‘条码’来判断得到的。而条码也有两种格式,即‘KPL11C20FUUA0780349’(19位)和‘C20OJ12AB01791’(14位)。编码方式中,‘KPL11C20FUUA0780349’从第二位进行提取四位,即‘PL11’;‘C20OJ12AB01791’从第四位开始提取四位,即‘OJ12’。主要是根据这四位判断得来的档位,更新进SQL。

    编码规则:四位数据第一位为年份;从A(2000),B(2001)。。。。。这样得来的。

    四位中第二位为月份:从A(01),B(02)。。。。。。一直到12.

    剩下两位为日期。

             case

    when SUBSTRING(条码,4,1)='A' then '2000'

    when SUBSTRING(条码,4,1)='B' then '2001'

    when SUBSTRING(条码,4,1)='C' then '2002'

    when SUBSTRING(条码,4,1)='D' then '2003'

    when SUBSTRING(条码,4,1)='E' then '2004'

    when SUBSTRING(条码,4,1)='F' then '2005'

    when SUBSTRING(条码,4,1)='G' then '2006'

    when SUBSTRING(条码,4,1)='H' then '2007'

    when SUBSTRING(条码,4,1)='I' then '2008'

    when SUBSTRING(条码,4,1)='J' then '2009'

    when SUBSTRING(条码,4,1)='K' then '2010'

    when SUBSTRING(条码,4,1)='L' then '2011'

    when SUBSTRING(条码,4,1)='M' then '2012'

    when SUBSTRING(条码,4,1)='N' then '2013'

    when SUBSTRING(条码,4,1)='O' then '2014'

    when SUBSTRING(条码,4,1)='P' then '2015'

    when SUBSTRING(条码,4,1)='Q' then '2016'

    when SUBSTRING(条码,4,1)='R' then '2017'

    when SUBSTRING(条码,4,1)='S' then '2018'

    when SUBSTRING(条码,4,1)='T' then '2019'

    when SUBSTRING(条码,4,1)='U' then '2020'

    when SUBSTRING(条码,4,1)='V' then '2021'

    when SUBSTRING(条码,4,1)='W' then '2022'

    when SUBSTRING(条码,4,1)='X' then '2023'

    when SUBSTRING(条码,4,1)='Y' then '2024'

    when SUBSTRING(条码,4,1)='Z' then '2025'

    END

    刚开始用了一个case语句,先做14位的条码,然而只是得到了一个年份。后来才慢慢想到用’+’来将月份拼接起来。

    case

    when SUBSTRING(条码,5,1)='A' then '01'

    when SUBSTRING(条码,5,1)='B' then '02'

    when SUBSTRING(条码,5,1)='C' then '03'

    when SUBSTRING(条码,5,1)='D' then '04'

    when SUBSTRING(条码,5,1)='E' then '05'

    when SUBSTRING(条码,5,1)='F' then '06'

    when SUBSTRING(条码,5,1)='G' then '07'

    when SUBSTRING(条码,5,1)='H' then '08'

    when SUBSTRING(条码,5,1)='I' then '09'

    when SUBSTRING(条码,5,1)='J' then '10'

    when SUBSTRING(条码,5,1)='K' then '11'

    when SUBSTRING(条码,5,1)='L' then '12'

    end

    最后再提取日期,组合成一组年月日的日期格式。但是有两种条码啊,刚开始想用if  else 这种,但是这样的话就没法直接直接生成档位信息了。还有一个判断分支,用case语句来根据时间区间判断档位信息。这里用到了case语句的多层嵌套,虽然最后的SQL语句非常长,但是得到了我想要的数据,感觉非常开心。具体的SQL语句就不写了,如果按照我说的,你写出来是没有问题的!

  • 相关阅读:
    IM服务器架构实现
    TCP打洞技术
    Java的守护线程与非守护线程
    SQL中时间为空的处理小结
    tfs
    Silverlight技术总结
    PMS
    Silverlight的TabControl的selectionChanged事件中读取不到TextBox值的bug。
    hahahahahah
    APM文章
  • 原文地址:https://www.cnblogs.com/cumt-cwp/p/8514253.html
Copyright © 2011-2022 走看看