用sql实现汉字转拼音
有时我们会需要将汉字转为拼音,例如需要将省市转为拼音后当做编码存储(尽管国家有统一的标识码,但有时候我们还是会用到),网络上也有工具提供汉字转拼音的功能,但各有优劣,一般转拼音后还会存在带声调的字母,可以用sql统一转换。
DROP TABLE PINYIN; CREATE TABLE PINYIN(ID VARCHAR2(),B VARCHAR2(),C VARCHAR2(),D VARCHAR2(),E VARCHAR2()); --用金山词霸汉字转拼音工具先转有声调的拼音,拷贝到E列中
--将excel中的数据首列加上ID,然后拷贝到该表中,B:省份,C:城市,D:区县,E:拼音
SELECT * FROM PINYIN FOR UPDATE; --将声调替换为字母,因为带声调的都是元音字母,因此只需要替换5*4个声调即可
update pinyin t set t.e=REPLACE (T.e,'ā','a');
update pinyin t set t.e=REPLACE (T.e,'á','a');
update pinyin t set t.e=REPLACE (T.e,'ǎ','a');
update pinyin t set t.e=REPLACE (T.e,'à','a');
update pinyin t set t.e=REPLACE (T.e,'ō','o');
update pinyin t set t.e=REPLACE (T.e,'ó','o');
update pinyin t set t.e=REPLACE (T.e,'ǒ','o');
update pinyin t set t.e=REPLACE (T.e,'ò','o');
update pinyin t set t.e=REPLACE (T.e,'ê','e');
update pinyin t set t.e=REPLACE (T.e,'ē','e');
update pinyin t set t.e=REPLACE (T.e,'é','e');
update pinyin t set t.e=REPLACE (T.e,'ě','e');
update pinyin t set t.e=REPLACE (T.e,'è','e');
update pinyin t set t.e=REPLACE (T.e,'ī','i');
update pinyin t set t.e=REPLACE (T.e,'í','i');
update pinyin t set t.e=REPLACE (T.e,'ǐ','i');
update pinyin t set t.e=REPLACE (T.e,'ì','i');
update pinyin t set t.e=REPLACE (T.e,'ū','u');
update pinyin t set t.e=REPLACE (T.e,'ú','u');
update pinyin t set t.e=REPLACE (T.e,'ǔ','u');
update pinyin t set t.e=REPLACE (T.e,'ù','u');
update pinyin t set t.e=REPLACE (T.e,'ǖ','v');
update pinyin t set t.e=REPLACE (T.e,'ǘ','v');
update pinyin t set t.e=REPLACE (T.e,'ǚ','v');
update pinyin t set t.e=REPLACE (T.e,'ǜ','v');
update pinyin t set t.e=REPLACE (T.e,'ü','v'); --去首尾空格,并且首字母大写
update pinyin set e=trim(e);
update pinyin set e=initcap(e); --查询有无重复的拼音,给重复的拼音后面加2,,,
select *
from pinyin t
where t.e in (select e from pinyin group by e having count() > )
order by t.e; --和上一步循环执行,直到没有重复项
update pinyin set e=e||''
where pinyin.id in (
select max(id)
from (select t.id, t.b, t.c, t.d, t.e
from pinyin t
where t.e in (select e from pinyin group by e having count() > )
order by t.e) s
group by s.e);
commit; select * from pinyin order by to_number(id) ;
用sql实现汉字转拼音的更多相关文章
- sql获取汉字的拼音首字母的函数
ql获取汉字的拼音首字母 if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and ...
- sql 函数 汉字转拼音
GO /****** Object: UserDefinedFunction [dbo].[fn_GetPy] Script Date: 2017/1/4 10:53:49 ******/ SET A ...
- sql获取汉字的拼音首字母
if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and xtype in (N'FN' ...
- sql语句 汉字转拼音首字母
(1)------------------------------------------------------------------------------------------------- ...
- sql server 汉字转拼音首字母
create function fun_getPY ( @str nvarchar(4000) ) returns nvarchar(4000) as begin declare @word ncha ...
- SQL Server 汉字转拼音
IF OBJECT_ID('Fn_GetQuanPin','Fn') IS NOT NULL DROP FUNCTION fn_GetQuanPin go )) ) as begin ),) decl ...
- SQL汉字转拼音函数-支持首字母、全拼
SQL汉字转拼音函数-支持首字母.全拼 FROM :http://my.oschina.net/ind/blog/191659 作者不详 --方法一sqlserver汉字转拼音首字母 --调用方法 s ...
- sql函数:汉字转换为拼音
sql数据库自定义一个函数把下面代码写进去 功能是得到汉字拼音首字母create function fun_getPY(@str nvarchar(4000)) returns nvarchar(40 ...
- oracle 根据汉字返回拼音函数
参见戴明明的博客,oracle 根据汉字返回拼音函数,由于他的博客里没有提供完整的代码,研究了一个多小时,才弄出来: 上来贴代码吧.. --------------Type Definition CR ...
随机推荐
- C# BackgroundWorker详解,图例,原理分析
先声明,大部分资料均参考网上,进行了整理. 1. 在 VS 中添加了 BackgroundWorker 组件, 该组件在多线程编程方面使用起来非常 方便,然而在开始时由于没有搞清楚它的使用机制, 走了 ...
- Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext
Entity Framework:如果允许模型处于非法状态,在某些场景下,记得清空DbContext 背景 之前写过两篇文章介绍模型的合法性: DDD:关于模型的合法性,Entity.IsValid( ...
- 简洁AngularJS框架后台管理系统bootstrap后台模板
最近在做一个后台管理的项目,但是没有设计图完全,所以就发现一款非常不错的模版. 这个模版是基于 AngularJS 和 bootstrap 的后台管理系统模版. Minovate是 AngularJS ...
- mybatis 入门优化
在上一节<mybatis快速入门>的基础上对IWebUserDao的实现类进行了优化,暂时命名为WebUserDaoMybatis2.java package com.mozi.dao.i ...
- OOAD(面向对象分析和设计)GRASP之创建者模式(Creator)又称生成器模式学习笔记
说OOAD是一门玄学,一点都不为过.又或许是因为我之前一直没有很好的建立面向对象的思想,更有可能是因为练得不够多...总之,一直没能很好理解,哪怕把一本叫做<UML和模式应用>的书翻来覆去 ...
- UE4创建空白关卡并添加碰撞体
让我们接着上次继续学习UE4引擎,今天我们学习下怎样创建空白的关卡以及添加碰撞物体. 一. 创建空白关卡 1) 点击文件 -> 新建关卡(或者按快捷键Ctrl+N). 2) 你可以选择Defau ...
- 微信JSAPI支付 跟 所遇到的那些坑
首先介绍一下我在调用微信支付接口使用的是 weixin.senparc SDK,非常方便好用开源的一个微信开发SDK. weixin.senparc SDK 官网:http://weixin.senp ...
- javascript构造函数以及原型对象的理解
以下是一个构造函数的例子 如果是实例方法,不同的实例化,它们引用的地址是不一样的,是唯一的. //定义一个构造函数 function People(name,age){ this.name=name; ...
- Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)的解决方法
在连接数据库时,报这个错误,是/var/lib/mysql/ 目录下没有mysql.sock文件,在服务器搜索myslq.sock文件,我的是在/tmp/mysql.sock 解决方法是加一个软链: ...
- Apache的htaccess文件出现500错误的原因
Apache 我平时很少用到,今天测试环境下碰到个问题,老是500错误莫名其妙 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FI ...