`
xqf222
  • 浏览: 124903 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL批量重命名中文字段名为对应拼音首字母字段名脚本

 
阅读更多

操作步骤1:生成获取中文字符串对应的拼音首字母字符串函数

操作步骤2:执行重命名中文字段名为拼音字首母字段名脚本

--1、SQL获取中文字符串对应的拼音首字母字符串函数
Create function fun_getPY
(
@str nvarchar(4000)
)
returns nvarchar(4000)
as
begin
declare @word nchar(1),@PY nvarchar(4000)

set @PY=''

while len(@str)>0
begin
set @word=left(@str,1)

--如果非汉字字符,返回原字符
set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
then (
select top 1 PY
from
(
select 'A' as PY,N'驁' as word
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'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select 'Z',N'咗'
) T
where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC
)
else @word
end)
set @str=right(@str,len(@str)-1)
end

return @PY

end

--2、SQL批量重命名中文字段名为对应拼音首字母字段名脚本

--查询当前数据库中的所有中文字段名列表
select b.name as tablename,a.name as columnname from sys.columns a left join sys.objects b on a.object_id=b.object_id where UNICODE(a.name) BETWEEN 19968 AND 19968+20901 order by b.name

--定义游标查询变量
declare @TableName nvarchar(250)
declare @ColumnName nvarchar(250)

--声明读取数据库所有数据表名称游标mycursor1
declare mycursor1 cursor for select b.name as tablename,a.name as columnname from sys.columns a left join sys.objects b on a.object_id=b.object_id where UNICODE(a.name) BETWEEN 19968 AND 19968+20901 order by b.name

--打开游标
open mycursor1
--从游标里取出数据赋值到我们刚才声明的数据表名变量中
fetch next from mycursor1 into @TableName,@ColumnName
--如果游标执行成功
while (@@fetch_status=0)
begin

--定义重命名字段变量
declare @NewColumnName varchar (250)
select @NewColumnName=dbo.fun_getPY(@ColumnName)

declare @renameCommand nvarchar(2000)
set @renameCommand=@TableName+'.'+@ColumnName

--指定重命名字段指令
exec sp_rename @renameCommand,@NewColumnName,'column'

--用游标去取下一条记录
fetch next from mycursor1 into @TableName,@ColumnName
end

--关闭游标
close mycursor1
--撤销游标
deallocate mycursor1

--查询重命名后的当前数据库中的所有中文字段名列表
select b.name as tablename,a.name as columnname from sys.columns a left join sys.objects b on a.object_id=b.object_id where UNICODE(a.name) BETWEEN 19968 AND 19968+20901 order by b.name

分享到:
评论

相关推荐

    脚本修改字段名、数据类型

    在IT行业的数据库管理与开发领域,SQL(Structured Query Language)是一种极为...希望本文能为读者提供有关如何使用SQL修改数据库字段名、数据类型及空值属性的全面指导,助力大家在数据库管理的道路上更加游刃有余。

    sql实现修改表字段名的方法详解

    在SQL中,修改表字段名是一项常见的数据库管理任务,它涉及到对现有数据库结构的调整。本文将详细解析如何使用SQL来实现这一操作。 首先,我们要介绍的是`sp_rename`存储过程,这是SQL Server中用于改名的标准方法...

    SQLPrompt快速参考指南(中文机翻word版)

    此快速参考指南通过中文机器翻译的方式将原英文文档转化为中文版本,方便中文用户更好地理解和使用SQLPrompt的功能。本文档涵盖了SQLPrompt的基本功能和常用操作,帮助用户更快地上手这款工具。 #### 二、基本概念...

    常用SQL*Plus语句:

    INSERT INTO 表名 (字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名; 2. UPDATE语句:用于更新数据表中的记录。 3. DELETE语句:用于删除数据表中的记录。 例如: UPDATE 表名 SET 字段...

    从Sql Server迁移数据到Oracle.docx

    6. 批量生成脚本:在迁移向导中,可以批量生成脚本,例如unload_script和oracle_ctl脚本,用于数据导出和导入。 7. 数据导出和导入:使用unload_script脚本可以从源数据库中生成数据导出文件,然后使用oracle_ctl...

    KETTLE and mysql多表批量抽取字段.zip

    这需要创建一个新的数据库表或者在已有表的基础上插入数据,可以通过“SQL脚本”步骤预先创建目标表结构。 6. **批量处理**:为了处理多个表,你可以创建多个转换并分别配置,然后在作业中通过“启动转换”步骤来...

    sql从创建建表到插入查询数据的实例脚本语句笔记

    示例中的SQL脚本通过以下命令创建了一个名为`test_db2`的数据库: ```sql createdatabase test_db2; ``` 这行命令用于创建一个名为`test_db2`的新数据库。在MySQL中,`CREATE DATABASE`命令用于创建一个新的数据库。...

    sqlserver无主键表的同步方案1

    其次,对于字段长度超过8000的字段,如image、text、ntext,脚本通过将它们转换为varbinary(max)、varchar(max)、nvarchar(max)来尝试解决,但在SQL Server 2012及更高版本中,实际最大长度仍受限于8000,这可能导致...

    sql server系统存储过程

    重命名表名为`old_table_name`为`new_table_name`,字段名为`old_column_name`为`new_column_name`: ```sql EXEC sp_rename 'old_table_name', 'new_table_name'; -- 修改数据表名称 EXEC sp_rename 'table_name...

    整理出的导出sql数据生成excel

    在`field_name()`方法中,你可以根据需要重命名字段名。例如,如果原始字段名为`column1`,你可以定义: ```vbscript Function field_name(field) If field = "column1" Then field_name = "新字段名" Else ...

    alter提升各种数据库脚本的方法

    - **SQL Server:** 修改表`table_name`中的`column_name`字段为`BIT`类型且不允许为空。 ```sql ALTER TABLE table_name ALTER COLUMN column_name BIT NOT NULL; ``` - **Oracle:** 修改表`table_name`中的`...

    笔记10_WinCC数据远程上传SQLServer.doc

    【WinCC数据远程上传到SQLServer详解】 WinCC是一款由Siemens公司开发的SCADA(Supervisory Control and Data Acquisition)系统,常用于工业自动化环境中的监控和数据采集。通过WinCC,用户可以实时监控设备状态,...

    SQLServer与DB2迁移中的主要差别及解决办法

    例如,SQL Server允许的字段名最大长度为128字节,而DB2仅为30字节。这要求在迁移过程中对超出长度限制的标识符进行重命名,以符合DB2的规范。此外,DB2还对Schema名称、数据库名称等设置了特定的长度限制,这是SQL ...

    postgreSql基础命令及linux下postgreSql命令.pdf

    3. 重命名一个字段:alter table [表名] rename column [字段名A] to [字段名B]; 4. 给一个字段设置缺省值:alter table [表名] alter column [字段名] set default [新的默认值]; 5. 去除缺省值:alter table [表名...

    SQLSERVER数据库结构比较工具

    字段差异则包括字段数量、字段名、字段类型、长度、是否允许空值等属性的区别。 使用数据库比较工具时,需要注意以下几点: - **版本兼容性**:确保比较的两个数据库版本兼容,避免因版本差异导致的结构不匹配问题...

    根据sql脚本修改数据库表结构的几种解决方案

    在数据库管理中,根据SQL脚本修改数据库表结构是常见的需求,特别是在系统升级或功能扩展时。本文将探讨两种解决方案,以帮助您高效地完成这一任务。 解决方案一依赖于SQL Server 2008 R2的内置功能。首先,生成新...

    Oracle PL SQL 编程手册(SQL大全).docx

    ### Oracle PL/SQL 编程手册(SQL大全)关键知识点解析 #### 一、SQL PLUS 命令与关键字 在《Oracle PL/SQL 编程手册(SQL大全)》文档中,首先介绍了 SQL*PLUS 工具的基本使用方法,包括 SQL 语句的关键字以及 SQL*...

    mysql三小时学习教案

    - 恢复:通过导入SQL脚本实现。 #### 八、环境搭建:MySQL + Apache + PHP - **安装Apache服务器**:确保Apache服务器已正确安装并运行。 - **安装PHP**:配置PHP以支持MySQL连接。 - **配置连接**:确保Apache和...

Global site tag (gtag.js) - Google Analytics