zoukankan      html  css  js  c++  java
  • SQL 存储过程 传入数组参数

    今天在做统计数据的时候,传入数组导致数据不显示。解决方式和大家分享一下:

    --参数@CompanyName='北京,天津,上海'

        DECLARE @PointerPrev int
        DECLARE @PointerCurr int
        DECLARE @TName nvarchar(100)
        Set @PointerPrev=1
        while (@PointerPrev < LEN(@CompanyName))
        Begin
            Set @PointerCurr=CharIndex(',',@CompanyName,@PointerPrev)
            if(@PointerCurr>0)
            Begin
                set @TName=SUBSTRING(@CompanyName,@PointerPrev,@PointerCurr-@PointerPrev)

              --我们可以在这里直接进行删除或修改

               DELETE FROM TestA    WHERE Name=@TName

             --如果作为查询条件,我需要创建一个临时表,将数据插入进去
             --insert into #CnameTable (Name) VALUES (@TName)
             --insert into #CnameTable (Name)  SELECT Name FROM TestName where Name like '%'+@TName+'%'
             --这里的TestName 表中数剧量大时会降低查询速度,建议大家用其他方式处理,例如指针、重新拼接字符串等

                SET @PointerPrev = @PointerCurr+1
            End
            else
                Break
        End
        --因为最后一个后面没有逗号,所以在循环中跳出,需另外再删除
         set @TName=SUBSTRING(@CompanyName,@PointerPrev,LEN(@CompanyName)-@PointerPrev+1)

         DELETE FROM TestA    WHERE Name=@TName

  • 相关阅读:
    HBase权威指南
    Mapreduce编程
    Hive内部表和外部表的区别
    Android Volley全然解析(四),带你从源代码的角度理解Volley
    codeforces 448CPainting Fence
    2.maven 安装配置
    cocos2d-x 3.0正式版创建project笔记
    C. DZY Loves Sequences
    spring 基础回想 tips01
    spring 配置属性细节
  • 原文地址:https://www.cnblogs.com/LoveSuk/p/5775768.html
Copyright © 2011-2022 走看看