sqlserver重命名字段,sql数据库重命名代码
操作步骤1:生成获取中文字符串对应的拼音首字母字符串函数
操作步骤2:执行重命名中文字段名为拼音字首母字段名脚本
- 1、SQL获取中文字符串对应的拼音首字母字符串函数
创建函数乐趣_getPY
(
@str nvarchar(4000)
)
返回nvarchar(4000)
如同
开始
声明@word nchar(1),@PY nvarchar(4000)
set @PY=
而len(@str) 0
开始
set @word=left(@str,1)
-如果非汉字字符,返回原字符
set @PY=@PY(当unicode(@word)在19968和19968 20901之间时的大小写
然后(
选择顶部一个
从
(
选择A作为PY,N驁作为单词
union all select B ,N 簿
union all select C ,N 錯
union all select D ,N 鵽
union all select E ,N 樲
union all select F ,N 鰒
union all select G ,N 腂
union all select H ,N 夻
union all select J ,N 攈
union all select K ,N 穒
union all select L ,N 鱳
union all select M ,N 旀
union all select N ,N 桛
union all select O ,N 漚
union all select P ,N 曝
union all select Q ,N 囕
union all select R ,N 鶸
联合所有选择,N蜶
union all select T ,N 籜
union all select W ,N 鶩
union all select X ,N 鑂
union all select Y ,N 韻
联合所有选择z ,N 咗
)T
其中word=@ word collate中文_ PRC _ CS _ AS _ KS _ WS
按PY ASC排序
)
else @word
结束)
set @str=right(@str,len(@str)-1)
目标
返回@PY
目标
-查询当前数据库中的所有中文字段名列表
从sys中选择b.name作为tablename,a . name作为列名。列a左连接系统。a . object _ id=b . object _ id上的对象b其中EN 19968之间的UNICODE(a . name)和19968 20901按b.name排序
-定义游标查询变量
declare @TableName nvarchar(250)
declare @ColumnName nvarchar(250)
-声明读取数据库所有数据表名称游标我的光标一
为挑选声明我的光标1游标b .姓名为tablename,a.name为sys中的列名。列a左连接系统。a . object _ id=b . object _ id上的对象b其中EN 19968之间的UNICODE(a . name)和19968 20901按b.name排序
-打开游标
打开我的光标一
-从游标里取出数据赋值到我们刚才声明的数据表名变量中
将然后从我的光标1提取到@TableName,@ColumnName
-如果游标执行成功
while (@@fetch_status=0)
开始
-定义重命名字段变量
声明@ new列名varchar(250)
select @ new column name=dbo。fun _ getPY(@列名)
声明@renameCommand nvarchar(2000年)
set @renameCommand=@TableName . @ColumnName
-指定重命名字段指令
exec sp_rename @renameCommand,@NewColumnName, column
-用游标去取下一条记录
将然后从我的光标1提取到@TableName,@ColumnName
目标
-关闭游标
关闭我的光标一
-撤销游标
取消分配我的光标一
-查询重命名后的当前数据库中的所有中文字段名列表
从sys中选择b.name作为tablename,a . name作为列名。列a左连接系统。a . object _ id=b . object _ id上的对象b其中EN 19968之间的UNICODE(a . name)和19968 20901按b.name排序