为什么只更新了最后一条数据

xuyiwei2004 2011-02-19 10:28:28
test 表内共有 5条数据。为什么执行了以下代码只更新了最一个条数据。


declare @pos int

declare @len int

declare @str nvarchar(4000)

declare @des nvarchar(4000)

declare @count int

set @des ='a'--要替换的字符

set @len=len(@des)

set @str= 'b'--要替换成的值

set @count=0--统计次数.

WHILE 1=1

BEGIN

select @pos=patINDEX('%'+@des+'%',txt) - 1

from test --表名

where txt is not null

IF @pos>=0 -- 如果找到 要替换的字符 字符就执行下面的语句

begin

DECLARE @ptrval binary(16)

SELECT @ptrval = TEXTPTR(txt)

from test --表名

where txt is not null --条件

UPDATETEXT test.txt @ptrval @pos @len @str

set @count=@count+1

end

ELSE

break;

END

select @count

...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2011-02-19
  • 打赏
  • 举报
回复
[code=SQ]select @pos=patINDEX('%'+@des+'%',txt) - 1 from test [/code]
这是一个赋值,本身并不循环,上面while 1=1 这句话也是固定不变的。
快溜 2011-02-19
  • 打赏
  • 举报
回复
用循环不行,用游标试试。
快溜 2011-02-19
  • 打赏
  • 举报
回复
--这样就行了吧?
快溜 2011-02-19
  • 打赏
  • 举报
回复
[code=S]--[/code]
快溜 2011-02-19
  • 打赏
  • 举报
回复
[code=SQ][code=SQ]kk[/code][/code]
-晴天 2011-02-19
  • 打赏
  • 举报
回复
我靠!
[code=SQ][code=SQLL][/code]
-晴天 2011-02-19
  • 打赏
  • 举报
回复
[code=SQL]
-晴天 2011-02-19
  • 打赏
  • 举报
回复

[code=SQL]
--kkkk
[/code]
快溜 2011-02-19
  • 打赏
  • 举报
回复
。。
[code=SQ]
--kkkk
[/code]
快溜 2011-02-19
  • 打赏
  • 举报
回复
[code=SQ]
--可以用了?
[/code]
-晴天 2011-02-19
  • 打赏
  • 举报
回复
try:
create table test(txt nvarchar(100))
insert into test select 'kloweakdnalkaKD'
insert into test select 'onmsadjodaiad'
insert into test select 'vwioaujh'
insert into test select 'foimnsd'
go
declare @pos int
declare @len int
declare @str nvarchar(4000)
declare @des nvarchar(4000)
declare @count int
set @des ='a'--要替换的字符
set @len=len(@des)
set @str= 'b'--要替换成的值
set @count=0--统计次数.
while exists(select 1 from test where charindex(@des,txt)>0)
begin
update test set txt=stuff(txt,charindex(@des,txt),@len,@str) from test where charindex(@des,txt)>0
set @count=@count+@@ROWCOUNT
end
select @count
select * from test
go
drop table test
/*
-----------
7

(1 行受影响)

txt
----------------------------------------------------------------------------------------------------
klowebkdnblkbKD
onmsbdjodbibd
vwiobujh
foimnsd

(4 行受影响)

*/
/*
WHILE 1=1
BEGIN
select @pos=patINDEX('%'+@des+'%',txt) - 1
from test --表名
where txt is not null
IF @pos>=0 -- 如果找到 要替换的字符 字符就执行下面的语句
begin
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(txt)
from test --表名
where txt is not null --条件
UPDATETEXT test.txt @ptrval @pos @len @str
set @count=@count+1
end
ELSE
break;
END
select @count
*/
92讲视频课+16大项目实战+课件源码  为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。      从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。   本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。  二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。  四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。  五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

34,575

社区成员

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

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