周一至周五 : 08:30 - 17:30 客服专员电话/微信:18049989370 QQ:857188287
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
存储过程:替换数据库中的文本值为新的值
显示全部楼层 倒序浏览 发表日期 2020-02-04 16:46:17 2762次阅读 0次回复
本帖最后由 hessen 于 2020-2-6 12:04 编辑

在日常运维中会出现将整个数据库中的某个字符替换为一个新的字符串,如果逐表更新会存在较大的困难也非常繁琐,工作量巨大。在经过系统权限允许后,可以通过下面的存储过程一键整个库替换。需求比如:将要门店的名称【幸福路店】更名为【幸运路店】,则只需要创建下面的存储过程后,如果是经常性的操作可在快表建立模版操作,少的话也可以在数据库直接操作。

  1. DECLARE        @return_value int

  2. EXEC        @return_value = [dbo].[UPDATE_VARCHARFIELD]
  3.                 @OLDNAME = N'幸福路店',
  4.                 @NEWNAME = N'幸运路店'

  5. SELECT        'Return Value' = @return_value

  6. GO
复制代码

上面是具体替换的示例,下面为要创建的存储过程

  1. CREATE PROCEDURE [dbo].[UPDATE_VARCHARFIELD]
  2. @OLDNAME VARCHAR(20),@NEWNAME VARCHAR(20)
  3. AS

  4. DECLARE @sql VARCHAR(800)
  5. DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100),@type VARCHAR(100)
  6. DECLARE cursor1 CURSOR FOR  

  7.       SELECT b.name AS tbname ,a.name AS cname,a.xtype
  8.       FROM syscolumns a  ,sysobjects b
  9.       WHERE a.id = object_id(b.name)    AND (left(b.name,4) = 'SYS_'   OR left(b.name,2) = 'T_' ) AND b.xtype <> 'V' AND b.xtype <> 'P' AND b.xtype <> 'FN' AND a.colstat <> 1 AND a.xtype IN('167')
  10.          
  11.       OPEN cursor1                       
  12.       FETCH NEXT FROM cursor1 INTO @tablename,@columnname,@type
  13.       WHILE @@fetch_status=0   
  14. BEGIN
  15.       SET @sql=' UPDATE '+@tablename+' SET '+@columnname+' = REPLACE( '+@columnname +','''+@OLDNAME+ ''','''+@NEWNAME+''')'
  16.       EXEC(@sql)            
  17.       FETCH NEXT FROM  cursor1 INTO @tablename,@columnname,@type
  18. END
  19. CLOSE cursor1                  
  20. DEALLOCATE cursor1
  21. GO
复制代码
创建后就可以如示例一样使用了。
电话/微信:18049989370 QQ:857188287
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |