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

  • 相关阅读:
    控制流测试与条件测试
    12306的“短信公众号”到底是个啥?
    ISTQB名词辨析
    ISTQB TA
    启动Chrome时自动开启开发者模式
    LoadRunner Community Edition 12.60 无法获取Community License
    用言的活用声调变化规则
    ISTQB TTA大纲中提到的参考书目
    Java调用方法参数究竟是传值还是传址?
    Java中的Lambda表达式简介及应用
  • 原文地址:https://www.cnblogs.com/LoveSuk/p/5775768.html
Copyright © 2011-2022 走看看