暂无图片
暂无图片
1
暂无图片
暂无图片
2
暂无图片

Oracle 显示字段繁体转换为简体

原创 杨金福 云和恩墨 2022-01-27
3317

今天遇到客户,公司是台湾国际化公司,数据库采用字符集AL32UTF8,字段存储字符均为繁体字,

但在大陆,需要与外围系统对接,需要转换为简体.

从数据库自带函数等,无法实现,找了一个存储过程自定义转换,貌似不错,介绍如下:

1.导入繁简体转换字库

imp system/manager file=/tmp/dm_fanti_jianti_7434.dmp fromuser=SJCL touser=APPS;

dm_fanti_jianti_7434.dmp下载:

链接:https://pan.baidu.com/s/1Q91Q9Tl7A6eYBG17RQk7iQ
提取码:aa8x

2.创建函数F_FANTI_TO_JIANTI
sqlplus apps/apps
执行F_FANTI_TO_JIANTI.txt

-------------------

CREATE OR REPLACE FUNCTION F_FANTI_TO_JIANTI(OLD_STRING IN VARCHAR2)
RETURN VARCHAR2 AS
LENGTH_NUM NUMBER := NULL;
OLD_WORD VARCHAR2(500) := NULL;
NEW_WORD VARCHAR2(500) := NULL;
ZZ_WORD VARCHAR2(500) := NULL;
I NUMBER := 0;
BEGIN
LENGTH_NUM := LENGTH(OLD_STRING);
FOR I IN REVERSE 1 .. LENGTH_NUM LOOP
OLD_WORD := SUBSTR(OLD_STRING, I, 1);
BEGIN
SELECT t.simplified
INTO NEW_WORD
FROM dm_fanti_jianti_7434 T
WHERE t.traditional = OLD_WORD;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NEW_WORD := OLD_WORD;
END;
ZZ_WORD := NEW_WORD || ZZ_WORD;
END LOOP;
RETURN ZZ_WORD;
END;

--------------------------

3.创建同义词
sqlplus apps/apps
SQL>create public synonym DM_FANTI_JIANTI_7434 for apps.DM_FANTI_JIANTI_7434;
SQL>create public synonym F_FANTI_TO_JIANTI for apps.F_FANTI_TO_JIANTI;


4.繁体转简体
sqlplus apps/apps
select name,f_fanti_to_jianti(name) from ps_employee_all;

注:字库中有7434对常用转换字符,可自定义往dm_fanti_jianti_7434 表中添加

最后修改时间:2022-01-27 15:49:28
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论
墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章中有sql语句,可以使用Markdown编辑器,使用手册:https://www.modb.pro/db/21858
3年前
暂无图片 点赞
评论