sqlserver_update_column_name.sql 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. USE yisha_admin
  2. IF OBJECT_ID (N'dbo.FUN_GetNewName', N'FN') IS NOT NULL
  3. DROP FUNCTION FUN_GetNewName;
  4. GO
  5. CREATE FUNCTION dbo.FUN_GetNewName(@name VARCHAR(50))
  6. RETURNS VARCHAR(50)
  7. AS
  8. BEGIN
  9. DECLARE @tempName VARCHAR(50);
  10. SET @tempName = @name;
  11. SET @tempName = CONCAT(UPPER(LEFT(@tempName, 1)),SUBSTRING(@tempName, 2,LEN(@tempName)-1));
  12. SET @tempName = REPLACE(@tempName,'_a','A');
  13. SET @tempName = REPLACE(@tempName,'_b','B');
  14. SET @tempName = REPLACE(@tempName,'_c','C');
  15. SET @tempName = REPLACE(@tempName,'_d','D');
  16. SET @tempName = REPLACE(@tempName,'_e','E');
  17. SET @tempName = REPLACE(@tempName,'_f','F');
  18. SET @tempName = REPLACE(@tempName,'_g','G');
  19. SET @tempName = REPLACE(@tempName,'_h','H');
  20. SET @tempName = REPLACE(@tempName,'_i','I');
  21. SET @tempName = REPLACE(@tempName,'_j','J');
  22. SET @tempName = REPLACE(@tempName,'_k','K');
  23. SET @tempName = REPLACE(@tempName,'_l','L');
  24. SET @tempName = REPLACE(@tempName,'_m','M');
  25. SET @tempName = REPLACE(@tempName,'_n','N');
  26. SET @tempName = REPLACE(@tempName,'_o','O');
  27. SET @tempName = REPLACE(@tempName,'_p','P');
  28. SET @tempName = REPLACE(@tempName,'_q','Q');
  29. SET @tempName = REPLACE(@tempName,'_r','R');
  30. SET @tempName = REPLACE(@tempName,'_s','S');
  31. SET @tempName = REPLACE(@tempName,'_t','T');
  32. SET @tempName = REPLACE(@tempName,'_u','U');
  33. SET @tempName = REPLACE(@tempName,'_v','V');
  34. SET @tempName = REPLACE(@tempName,'_w','W');
  35. SET @tempName = REPLACE(@tempName,'_x','X');
  36. SET @tempName = REPLACE(@tempName,'_y','Y');
  37. SET @tempName = REPLACE(@tempName,'_z','Z');
  38. RETURN @tempName;
  39. END;
  40. GO
  41. DECLARE @tableName VARCHAR(50)
  42. DECLARE @fieldName VARCHAR(50)
  43. DECLARE @newTableName VARCHAR(50)
  44. DECLARE @newFieldName VARCHAR(50)
  45. DECLARE @oldTableColumnName VARCHAR(50)
  46. DECLARE curTable CURSOR FOR
  47. SELECT name FROM sysobjects WHERE xtype = 'u' and name in('sys_area','sys_auto_job','sys_auto_job_log','sys_data_dict','sys_data_dict_detail','sys_department',
  48. 'sys_log_api','sys_log_login','sys_log_operate','sys_menu','sys_menu_authorize','sys_news',
  49. 'sys_position','sys_role','sys_user','sys_user_belong')
  50. OPEN curTable
  51. FETCH NEXT FROM curTable INTO @tableName
  52. WHILE (@@fetch_status = 0 )
  53. BEGIN
  54. DECLARE curField CURSOR FOR
  55. SELECT name FROM SysColumns Where id = Object_Id(@tableName)
  56. OPEN curField
  57. FETCH NEXT FROM curField INTO @fieldName
  58. WHILE ( @@fetch_status = 0 )
  59. BEGIN
  60. SET @newFieldName = dbo.FUN_GetNewName(@fieldName)
  61. SET @oldTableColumnName = CONCAT(@tableName,'.',@fieldName)
  62. print @oldTableColumnName + '*****' + @newFieldName
  63. EXEC [sp_rename] @objname = @oldTableColumnName ,
  64. @newname = @newFieldName,
  65. @objtype = 'COLUMN'
  66. FETCH NEXT FROM curField INTO @fieldName
  67. END
  68. CLOSE curField
  69. DEALLOCATE curField
  70. SET @newTableName = dbo.FUN_GetNewName(@tableName)
  71. print @tableName + '-------------------------' + @newTableName
  72. EXEC sp_rename @tableName, @newTableName;
  73. FETCH NEXT FROM curTable INTO @tableName
  74. END
  75. CLOSE curTable
  76. DEALLOCATE curTable
  77. DROP FUNCTION dbo.FUN_GetNewName