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

 

替换前

替换后

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章