zoukankan      html  css  js  c++  java
  • SQLSERVER2000中表变量的应用

    原语句如下

    1 declare @d datetime 
    2 set @d=getdate() 
    3 SELECT    [P_ID]  FROM     [ProductInfo]  
    4 WHERE [P_ID] IN 
    5 (28674,28667,28241,355,7210,14646,2164,11891,4519,14671,21788,21816,21817,21108,21196)
    6 select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate()) 


    现要求按括号中的ID顺序输出结果

    此时, 可以用到SQLSERVER2000 以上版本中特有的表变量(table)(亦可用临时表,但性能还是有不小的差距)

    结果语句如下:

     1 declare @d2 datetime
     2 set @d2=getdate() 
     3 declare @list  Nvarchar(4000)
     4 declare @str Nvarchar(10)
     5 declare @orderid int
     6 declare @tmp int
     7 
     8 Declare @TableVar Table (OrderID int  Primary Key ,TestID int)
     9 
    10 set @list='28674,28667,28241,355,7210,14646,2164,11891,4519,14671,21788,21816,21817,21108,21196'
    11 set @orderid=0
    12 while (charindex(',',@list)>0)
    13     begin 
    14     
    15     set @str=substring(@list,1,charindex(',',@list))
    16     print @str
    17     set @tmp= cast(Replace(@str,',','') as int)
    18     print @tmp
    19     set @list=substring(@list,len(@str)+1,len(@list)-len(@str)+1)
    20     ----set @str=Replace(@str,',','')
    21     set @orderid=@orderid+1
    22     print @orderid
    23     Insert Into @TableVar Values (@orderid, @tmp)
    24     end
    25 
    26 -- Select TestID  From @TableVar order by OrderID
    27 
    28 
    29 select [P_ID] from productinfo p 
    30 inner join  @TableVar  a 
    31 on p.p_ID=a.TestID
    32 order by a.OrderID
    33 
    34 select [语句执行花费时间(毫秒)]=datediff(ms,@d2,getdate()) 


    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    字典序
    分数线划定
    聪明的质检员
    月考
    山头狙击战
    如何查看屏幕touch driver是否在正常工作
    python 核心编程课后练习(chapter 6)
    python 核心编程课后练习(chapter 5)
    python 核心编程课后练习(chapter 3)
    python 核心编程课后练习(chapter 2)
  • 原文地址:https://www.cnblogs.com/downmoon/p/1019895.html
Copyright © 2011-2022 走看看