来人帮我解决分割串更新数据库缓慢的问题!!!求教求教!!!急!

Dotar 2012-09-13 03:17:01


declare @next int
declare @ArrayLen int
declare @errorSun int
set @errorSun=0
BEGIN TRANSACTION--开始事务
set @ArrayLen=dbo.Get_StrArrayLength(@DFXStr,'$')
set @next=1
while @next<=@ArrayLen-2
begin
if(@Step=1)
update DFXCompSpread set RDFeedback=dbo.Get_StrArrayStrOfIndex(@DFXStr,'$',@next+2),rdchange=dbo.Get_StrArrayStrOfIndex(@DFXStr,'$',@next+1) where DFXCSID=dbo.Get_StrArrayStrOfIndex(@DFXStr,'$',@next)
else
update DFXCompSpread set DFXComComment=dbo.Get_StrArrayStrOfIndex(@DFXStr,'$',@next+2), DFMChange=dbo.Get_StrArrayStrOfIndex(@DFXStr,'$',@next+1) where DFXCSID=dbo.Get_StrArrayStrOfIndex(@DFXStr,'$',@next)


用 dbo.Get_StrArrayLength 发现字符串长了,更新起来特别慢,贴个串:
'5099$Pass$阿萨德发生的$5003$Pass$阿发的是发生 $5009$Pass$$5004$Pass$$5031$Pass$$5041$Pass$$5039$Pass$$5058$Pass$$5005$Pass$$5008$Pass$$5018$Pass$$5038$Pass$$5084$Pass$$5002$Pass$$5045$Pass$$5022$Pass$$5019$Pass$$5036$Pass$$5042$Pass$$5046$Pass$$5066$Pass$$5043$Pass$$5050$Pass$$5014$Pass$$5016$Pass$$5021$Pass$$5054$Pass$$5060$Pass$$5069$Pass$$5013$Pass$$5065$Pass$$5006$Pass$$5007$Pass$$5010$Pass$$5011$Pass$$5015$Pass$$5017$Pass$$5024$Pass$$5025$Pass$$5027$Pass$$5033$Pass$$5035$Pass$$5044$Pass$$5048$Pass$$5070$Pass$$5075$Pass$$5078$Pass$$5061$Pass$$5062$Pass$$5053$Pass$$5023$Pass$$5032$Pass$$5076$Pass$$5012$Pass$$5020$Pass$$5029$Pass$$5030$Pass$$5034$Pass$$5037$Pass$$5040$Pass$$5047$Pass$$5049$Pass$$5051$Pass$$5052$Pass$$5059$Pass$$5063$Pass$$5067$Pass$$5068$Pass$$5071$Pass$$5072$Pass$$5073$Pass$$5074$Pass$$5077$Pass$$5079$Pass$$5080$Pass$$5082$Pass$$5083$Pass$$5086$Pass$$5087$Pass$$5090$Pass$$5091$Pass$$5092$Pass$$5093$Pass$$5064$Pass$$5088$Pass$$5089$Pass$$5026$Pass$$5028$Pass$$5056$Pass$$5098$Pass$$5055$Pass$$5057$Pass$$5081$Pass$$5085$Pass$$5094$Pass$$5095$Pass$$5096$Pass$$5097$Pass$$'




谁有更好的sql分割串的方法!!!!!!!!求教!!!!!!
...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dotar 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
我怎么只看到的一个2楼呢?

dbo.Get_StrArrayLength把这个代码贴出来看看
[/Quote]

CREATE function [dbo].[Get_StrArrayLength]
(
@str varchar(8000), --要分割的字符串
@split varchar(10) --分隔符号
)
returns int
as
begin
declare @location int
declare @start int
declare @length int
set @str=ltrim(rtrim(@str))
set @location=charindex(@split,@str)
set @length=1
while @location<>0
begin
set @start=@location+1
set @location=charindex(@split,@str,@start)
set @length=@length+1
end
return @length
end
以学习为目的 2012-09-17
  • 打赏
  • 举报
回复
我怎么只看到的一个2楼呢?

dbo.Get_StrArrayLength把这个代码贴出来看看
Dotar 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

是你循环更新慢..
[/Quote]

你没事做又跑我这个帖子回。。。。。。。。。。。
Net攻城狮 2012-09-13
  • 打赏
  • 举报
回复
是你循环更新慢..

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧