目前正在規劃並實施開發一套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
替換前
替換後