MSSQL带下划线的列名批量替换为驼峰结构好用

目前正在规划并实施开发一套ERP软件,数据库规范做了一个挑整,全小写带下杠调整为驼峰结构。

因本人全库最多两杠字段,以下执行为2杠替换驼峰结构

框架架构借用了前人所发内容

替换驼峰结构为本人思考测试应用

declare   @旧列名   varchar(500),@新列名   varchar(500)  
  select   @旧列名='token_create_time'--,@新列名='新列名'  
   
 --select  CHARINDEX ( '_' ,'aa_bb_cc' , 0)
 --select  CHARINDEX ( '_' ,'aa_bb_cc' , CHARINDEX ( '_' ,'aa_bb_cc' , 0)+1)
   
   
  declare     cursor_insert   cursor   for   select   d.name,a.name   from   syscolumns   a,   sysobjects   d   where   a.id=d.id   and   d.xtype='U' 
--and   a.name=@旧列名   注意,注释了此段后全库执行,不注释则仅更新当前字段 
--and d.name='sys' 注意,注释了此段后全库执行,不注释则仅更新当前表 
  declare   @i   varchar(500)  ,@oldCol varchar(500)
  open   cursor_insert  
  fetch   cursor_insert   into   @i ,@oldCol 
  while   @@fetch_status=0  
  begin  
	  declare @newCol varchar(500)
      set   @i=@i+'.'+@oldCol  
	  set	@newCol= UPPER(SUBSTRING(@oldCol,1,1))+SUBSTRING(@oldCol,2,( SELECT LEN(@oldCol)))
	  --print '首位'+ @newCol   
	  set	@newCol= SUBSTRING(@newCol,0,CHARINDEX ( '_' ,@newCol , 0))+UPPER(SUBSTRING(@newCol,CHARINDEX ( '_' ,@newCol , 0),2))+SUBSTRING(@newCol,CHARINDEX ( '_' ,@newCol , 0)+2,( SELECT LEN(@newCol)))
	  --  print '一杠'+ @newCol 
		 set	@newCol= SUBSTRING(@newCol,0,CHARINDEX ( '_' ,@newCol , CHARINDEX ( '_' ,@newCol , 0)+1))+UPPER(SUBSTRING(@newCol,CHARINDEX ( '_' ,@newCol , CHARINDEX ( '_' ,@newCol , 0)+1),2))+SUBSTRING(@newCol,CHARINDEX ( '_' ,@newCol , CHARINDEX ( '_' ,@newCol , 0)+1)+2,( SELECT LEN(@newCol)))
	  --  print '二杠'+ @newCol  
	  
		set @newCol=replace(@newCol,'_','')
		--print '替杠'+ @newCol
		print  @newCol   
		if(@newCol<>'SysName')--SysName
--消息 4185,级别 16,状态 1,过程 sp_rename,行 186 [批起始行 0]
--无法针对系统类型执行此操作。 执行替换这个字段时出错,不知何原因,请了解的朋友指教,所以我执行时排除了这个字段
		begin
			exec   sp_rename   @i,@newCol   -- 执行替换
		end
      fetch   cursor_insert   into   @i ,@oldCol  
  end  
  close   cursor_insert  
  deallocate   cursor_insert

 

替换前

替换后

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值