• 今天完成任务之SQL中len的使用


    由于昨天搬家,经理感觉有点对不住了,呵呵,其实 是我自己对不住了,
    上午就很辛苦的将算法写好,在自己的思路和流程下一个一个数据库都在我的手下形成了编码,其实上午根本没有忙什么都在想怎么搞了,下午才真正的将它给弄好,下面讲解下我自己听哈子。
    首先。我们将原来的表请出来一个并且在里面添加一个字段,然后进行自动的编写代号。好下面来写具体的内容。
    首先在我的思路里面有要在不同的情况下执行不同的方法,所以我真正的用到了len函数。
    其实len函数也很简单,我是这么写的
    len(@item_clsno)
    也就是求出@item_clsno的变量的长度。

    那么我们开始我们的具体的思路了,开始i先备份一张表
    SELECT * INTO dbo.table_zong1
    FROM dbo.table_zong
    ORDER BY item_clsno
    然后我们就在这个表上操作咯

     

    DECLARE YOUBIAO CURSOR FOR
    SELECT [id],[item_clsno]
    FROM dbo.table_zong1


    open YOUBIAO
    declare 
    @id bigint,
    @item_clsno varchar(510)

    fetch next from YOUBIAO
    into @id,@item_clsno
    if len(@item_clsno)=3
     
    begin
      
    update dbo.table_zong1
      
    set item_subno=@item_clsno+'0'
      
    where [id]=@id
     
    end
    else if len(@item_clsno)=2
     
    begin 
      
    update dbo.table_zong1
      
    set item_subno=@item_clsno+'00'
      
    where [id]=@id
     
    end
     
    else if len(@item_clsno)=4
      
    update dbo.table_zong1
      
    set item_subno=@item_clsno
      
    where [id]=@id
      
    while @@fetch_status=0
     
    begin
      
    fetch next from YOUBIAO
      
    into @id,@item_clsno
      
    if len(@item_clsno)=3
       
    begin
       
    update dbo.table_zong1
       
    set item_subno=@item_clsno+'0'
       
    where [id]=@id
       
    end
      
    else if len(@item_clsno)=2
       
    begin 
       
    update dbo.table_zong1
       
    set item_subno=@item_clsno+'00'
       
    where [id]=@id
       
    end
      
    else
       
    begin
       
    update dbo.table_zong1
       
    set item_subno=@item_clsno
       
    where [id]=@id
       
    end
     
    end

    close YOUBIAO


    然后再执行
    这个语句。问刚才改好的数据添加编码

    DEALLOCATE YOUBIAO
    DECLARE YOUBIAO CURSOR FOR
    SELECT [id],[item_subno]
    FROM dbo.table_zong1

    close YOUBIAO
    open YOUBIAO
    declare 
    @id bigint,
    @item_subno varchar(510),
    @bianliang int,
    @item_subno2 varchar(510),
    @bianliangvarchar varchar(510)

    Fetch next from YOUBIAO
    INTO @id,@item_subno

    set @bianliang=1
    set @item_subno2=@item_subno
    set @bianliangvarchar='000'+cast(@bianliang as nvarchar(510))
    UPDATE dbo.table_zong1
    SET item_subno = @item_subno+@bianliangvarchar
    WHERE [id]=@id

     

    WHILE @@FETCH_STATUS=0
    BEGIN 
        
    Fetch next from YOUBIAO
        
    INTO @id,@item_subno
        
    if @item_subno2=@item_subno
        
    begin
            
    set @bianliang=@bianliang+1
     
    if len(@bianliang)=1
     
    begin
              
    set @bianliangvarchar='000'+cast(@bianliang as nvarchar(510))
             
    UPDATE  dbo.table_zong1
             
    SET item_subno=@item_subno+@bianliangvarchar
              
    WHERE [id]=@id
     
    end
     
    else if len(@bianliang)=2
     
    begin
      
    set @bianliangvarchar='00'+cast(@bianliang as nvarchar(510))
             
    UPDATE  dbo.table_zong1
             
    SET item_subno=@item_subno+@bianliangvarchar
              
    WHERE [id]=@id
     
    end
     
    else if len(@bianliang)=3
     
    begin
      
    set @bianliangvarchar='0'+cast(@bianliang as nvarchar(510))
             
    UPDATE  dbo.table_zong1
             
    SET item_subno=@item_subno+@bianliangvarchar
              
    WHERE [id]=@id
     
    end
     
    else
     
    begin
      
    set @bianliangvarchar=cast(@bianliang as nvarchar(510))
             
    UPDATE  dbo.table_zong1
             
    SET item_subno=@item_subno+@bianliangvarchar
              
    WHERE [id]=@id
     
    end
            
        
    end
        
    else
        
    begin
            
    set @item_subno2=@item_subno
            
    set @bianliang=1
            
    set @bianliangvarchar='000'+cast(@bianliang as nvarchar(510))
             
    UPDATE  dbo.table_zong1
             
    SET item_subno=@item_subno+@bianliangvarchar
              
    WHERE [id]=@id
        
    end
        
    END
    CLOSE YOUBIAO


    这样编码就算是完成了。

    到最后经理说我的编码有问题,原来是8位到13位的编码没有取价格最低的,没办法重新做了一下子,感觉还可以就是要了点时间,因为6万条数据所花的时间太长了。
  • 相关阅读:
    Ubuntu Linux下的Wireshark使用drcom_2011.lua分析drcom协议
    Keil提示premature end of file错误 无法生成HEX文件
    Linux和win7(win10)双系统时间错误问题 时间相差8小时
    Wireshark使用drcom_2011.lua插件协助分析drcom协议
    Keil报错failed to execute 'd:KeilC51BINC51.EXE'
    第一篇博文
    LG 7078 贪吃蛇
    LG 1791 人员雇佣
    洛谷 2698 Flowerpot
    HDU 5965 扫雷
  • 原文地址:https://www.cnblogs.com/itgmhujia/p/1093791.html
Copyright © 2020-2023  润新知