`
xqf222
  • 浏览: 128849 次
  • 性别: 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 Server 增加字段、修改字段、修改类型、修改默认值及失败原因

    在执行重命名操作时,需要注意更改字段名可能会破坏现有脚本和存储过程。在执行以下命令时: EXEC sp_rename 'dbo.ErrorLog.ErrorTime', 'ErrorDateTime', 'COLUMN'; 系统会发出警告,提示更改字段名可能会有风险...

    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 字段...

    数据库脚本文件storedb.sql

    数据库脚本文件storedb.sql是一个用于创建和管理一个名为storedb的MySQL数据库的SQL脚本文件。该文件中包含了创建数据库所需的一系列SQL命令,如创建数据库、创建表、插入数据、更新数据、删除数据以及建立关系等...

    从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 [表名...

    精通SQL【经典SQL语句大全】PDF

    本文件涵盖多个SQL语句使用的要点和技巧,为读者提供了深入理解和运用SQL语句进行数据库查询、数据处理和编辑等操作的详尽指导。 1. SELECT语句是SQL中最常用的语句之一,用于从数据库中检索数据。掌握SELECT语句的...

    SQLSERVER数据库结构比较工具

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

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

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

Global site tag (gtag.js) - Google Analytics