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

 

替換前

替換後

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