Sql中的REPLACE替换了不止一次的问题

时间:2012-10-16 11:10:48

标签: sql

很奇怪不确定我是否正确但输出很奇怪:

 select * 
   into #TempScormModuelsTable  
 from Scorm.ScormModules

 select * from #TempScormModuelsTable 
 DECLARE @ScormModuleId int

DECLARE db_cursor CURSOR FOR   
SELECT ScormModuleId from #TempScormModuelsTable

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @ScormModuleId
WHILE @@FETCH_STATUS = 0
  BEGIN

   update #TempScormModuelsTable  
   set Directory = REPLACE(Directory,'SCORM','ScormPackages'),
   RelativeHtmlPath = REPLACE(RelativeHtmlPath,'SCORM','ScormPackages')

     FETCH NEXT FROM db_cursor INTO @ScormModuleId
  END  

--drop table #TempScormModuelsTable 

CLOSE db_cursor
DEALLOCATE db_cursor

然后在列目录中我有这个!     E:\的Inetpub \ www.sellandprosper.com \ ScormPackagesPackagesPackagesPackagesPackagesPackagesPackagesPackages \ SellingOfficeWithNewPCs

" ScormPackagesPackagesPackagesPackagesPackagesPackagesPackagesPackages"是" SCORM"而我只想把它作为ScormPackages..yikes

任何帮助?

1 个答案:

答案 0 :(得分:0)

那不是SQL。

你需要更接近......

UPDATE
  Scorm.ScormModules_backup
SET
  Directory        = REPLACE(Directory,        'SCORM', 'ScormPackages'),
  RelativeHtmlPath = REPLACE(RelativeHtmlPath, 'SCORM', 'ScormPackages')

SQL已基于设置,这自然会将其应用于每一行(非常类似于您的FOREACH伪代码)

我不确定您的WHERE条款是做什么的,但您也可以将WHERE条款附加到UPDATE

修改

好的,你刚刚完全改变了问题中的代码。

现在,您正在查看游标,但正在对整个表进行更新。

因此,如果您有8行,则执行8次更新。但每次你对表中的每一行都这样做。