加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLSERVER2000中表变量的应用

发布时间:2020-12-12 15:17:59 所属栏目:MsSql教程 来源:网络整理
导读:原语句如下: ? ? ?declare???@d???datetime?? ?set???@d?=?getdate?()? ?SELECT??????[?P_ID?]????FROM???????[?ProductInfo?]??? ?WHERE???[?P_ID?]???IN?? ?(?28674?,?28667?,?28241?,?355?,?7210?,?14646?,?2164?,?11891?,?4519?,?14671?,?21788?,?21816

原语句如下:

?

?

?declare???@d???datetime??

?set???@d?=?getdate?()?

?SELECT??????[?P_ID?]????FROM???????[?ProductInfo?]???

?WHERE???[?P_ID?]???IN??

?(?28674?,?28667?,?28241?,?355?,?7210?,?14646?,?2164?,?11891?,?4519?,?14671?,?21788?,?21816?,?21817?,?21108?,?21196?)

?select???[?语句执行花费时间(毫秒)?]?=?datediff?(ms,?@d?,?getdate?())?

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

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

结果语句如下:

?

?

?

?declare???@d2???datetime?

?set???@d2?=?getdate?()?

?declare???@list????Nvarchar?(?4000?)

?declare???@str???Nvarchar?(?10?)

?declare???@orderid???int?

?declare???@tmp???int?

?

?Declare???@TableVar???Table??(OrderID??int????Primary???Key??,TestID??int?)

?

?set???@list?=?'?28674,28667,28241,355,7210,14646,2164,11891,4519,14671,21788,21816,21817,21108,21196?'?

?set???@orderid?=?0?

?while??(?charindex?(?'?,?'?,?@list?)?>?0?)

??????begin??

?????

??????set???@str?=?substring?(?@list?,?1?,?charindex?(?'?,?@list?))

??????print???@str?

??????set???@tmp?=???cast?(?Replace?(?@str?,?''?)??as???int?)

??????print???@tmp?

??????set???@list?=?substring?(?@list?,?len?(?@str?)?+?1?,?len?(?@list?)?-?len?(?@str?)?+?1?)

??????--?--set?@str=Replace(@str,','')?

??????set???@orderid?=?@orderid?+?1?

??????print???@orderid?

??????Insert???Into???@TableVar???Values??(?@orderid?,??@tmp?)

??????end?

?

?--??Select?TestID??From?@TableVar?order?by?OrderID?

?

?

?select???[?P_ID?]???from??productinfo?p?

?inner???join????@TableVar???a?

?on??p.p_ID?=?a.TestID

?order???by??a.OrderID

?

?select???[?语句执行花费时间(毫秒)?]?=?datediff?(ms,?@d2?,?getdate?())?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读