Oracle 繁简体转换(未解决)
背景
2022-04-28,由于数据库存的都是简体数据,但是资料导出需要繁体,要给别人看。所以只好自己探索一下,至于为什么不用代码,就是想试试数据库,实在不行,我就回去用代码写。
准备工作
- 数据库Oracle 12
- 操作数据库的工具Dbeaver
参考文章
Oracle Convert()函数_w3cschool
求助数据的简繁转换(convert的深入问题) - Oracle开发 - ITPUB论坛-专业的IT技术社区
Oracle中文简繁体转换函数_入秋枫叶的博客-CSDN博客_oracle繁体转简体函数
Oracle中执行存储过程call和exec区别_master_yao的博客-CSDN博客_oracle调用存储过程语句同一个函数不一样的用法---Convert()_Noob_get_a_dream的博客-CSDN博客Oracle中执行存储过程call和exec区别_master_yao的博客-CSDN博客_oracle调用存储过程语句
思路
- 字符集是什么(SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET'; 这个语句可以查看字符集,但我不确定字符集的来源是哪,可能的来源有三个:我电脑的操作系统;部署Oracle服务器的操作系统;Oracle自带)。
- Convert函数的使用
- 写一个Procedure(SP)或者函数来测试一下转换的结果,因为查到的字符集很多,一个个试未免太难了。测试结果你可以选择打印输出,也可以建表存储。我是建表的。
- 执行Sp CALL KILLENTEST();
实践
这下面是我的理解,我没有求证,你们可以再多找找资料。
- SELECT CONVERT ('中国', 'ZHT16MSWIN950') FROM dual; --(string,dest_char)
- SELECT CONVERT ('中国', 'ZHT16MSWIN950','ZHS16GBK') FROM dual; --(string,char,char2)
CREATE OR REPLACE PROCEDURE KILLENTEST
IScn_text varchar(100);
LANGUAGE_char varchar(100);
ctn_text varchar(100) ;BEGINDELETE KILLEN_TEST;FOR x IN (SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET' )LOOP cn_text:='中国';LANGUAGE_char :=x.value;INSERT INTO KILLEN_TEST(COLUMN1,COLUMN2,COLUMN3,COLUMN4)SELECT cn_text ,LANGUAGE_char, CONVERT (cn_text, LANGUAGE_char),'CONVERT(string,dest_LANGUAGE_char)' FROM dual;--1. SELECT cn_text ,LANGUAGE_char, CONVERT (cn_text, LANGUAGE_char),'CONVERT(string,dest_LANGUAGE_char)' FROM dual;END LOOP;
END KILLENTEST;
CREATE OR REPLACE PROCEDURE KILLENTEST
IScn_text varchar(100);
LANGUAGE_char varchar(100);
LANGUAGE_char2 varchar(100);
ctn_text varchar(100) ;BEGINDELETE KILLEN_TEST;FOR x IN (SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET' AND value LIKE 'ZH%' )LOOP cn_text:='中国';LANGUAGE_char :=x.value; IF LANGUAGE_char LIKE 'US%' thenCONTINUE;END IF;-- INSERT INTO KILLEN_TEST(COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5,TEST_KEY)
-- SELECT cn_text ,LANGUAGE_char,'', CONVERT (cn_text, LANGUAGE_char),'CONVERT(string,dest_LANGUAGE_char)','1' FROM dual;FOR y IN (SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET' AND value LIKE 'ZH%') LOOPLANGUAGE_char2 :=y.value;IF LANGUAGE_char2 LIKE 'JA%' OR LANGUAGE_char=LANGUAGE_char2 thenCONTINUE;END IF;INSERT INTO KILLEN_TEST(COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5,TEST_KEY)SELECT cn_text ,LANGUAGE_char,LANGUAGE_char2, CONVERT (cn_text, LANGUAGE_char,LANGUAGE_char2),'CONVERT(string,LANGUAGE_char,LANGUAGE_char2)','2' FROM dual; INSERT INTO KILLEN_TEST(COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5,TEST_KEY) SELECT cn_text ,LANGUAGE_char,LANGUAGE_char2, CONVERT (cn_text, LANGUAGE_char2,LANGUAGE_char),'CONVERT(string,LANGUAGE_char2,LANGUAGE_char)','3' FROM dual;COMMIT;END LOOP;END LOOP;EXCEPTION
WHEN OTHERS THEN INSERT INTO KILLEN_TEST(COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5,TEST_KEY)SELECT cn_text ,LANGUAGE_char,LANGUAGE_char2, '','err','4' FROM dual;
END KILLENTEST;
结果
SELECT * FROM KILLEN_TEST kt WHERE COLUMN3 in('中国','中國');
结果1:FAIL
中国 AL24UTFFSS 中国 CONVERT(string,dest_LANGUAGE_char) 2022-04-28 11:51:33
中国 UTF8 中国 CONVERT(string,dest_LANGUAGE_char) 2022-04-28 11:51:33
中国 AL32UTF8 中国 CONVERT(string,dest_LANGUAGE_char) 2022-04-28 11:51:33
结果2:SQL 错误 [12703] [72000]: ORA-12703: 不支持此字符集转换
总结
最终我还是决定不搞数据库了,我还是用代码解决吧,头秃。
Oracle 繁简体转换(未解决)相关推荐
- 连接Oracle错误:800a0e7a未找到提供程序的解决
一.现象: C#程序中需要以Provider=OraOLEDB.Oracle.1方式访问ORACLE数据库.但程序执行时报异常:未在本地计算机注册"OraOLEDB.Oracle.1&quo ...
- 未解决oracle错误12505、01034、27101
很久没用Oracle,连接,出现下面错误: 根据资料:listener.ora文件,如果没有下图红框部分,应加上: 然后重启Oracle服务:再连接:又报下图错误: 根据资料,可在sqlplus输入s ...
- oracle日记账单据编号未生成_商管财务数据平台Oracle与共享未付池差异如何核对、解决?...
近期,总部新上线财务数据平台啦!各个系统间的差异异常数据清晰可见,随时可查,今天就和小伙伴们一起分享一下Oracle与共享未付池差异如何核对.解决.首先,将Oracle与共享未付池差异数据导出.由 ...
- oracle切换sqlserver,ORACLE语法转换成sqlserver,该如何解决
ORACLE语法转换成sqlserver 小弟在 ORACLE写了一个小函数,但是在sqlserver里执行不了,小弟不怎么懂得sqlserver的语法,大家帮忙看看,给指正指正 CREATE OR ...
- oracle编码转换utf16,oracle编码转换:AL32UTF8-ZHS16GBK
--修改Oracle数据库字符集为utf-8: SQL>conn / as sysdba; SQL>shutdown immediate; SQL>startup mount; SQ ...
- WUSTOJ 1324: Base64 Coding(Java)未解决,求题解
题目链接:1324: Base64 Coding 资料:ASCII码表 原文是英文,而且篇幅较长.因此下面不粘贴原文,只写中文大意. Description Base64是一种编码算法.它的工作原理是 ...
- 连接远程服务器CredSSP加密Oracle修正报错解决办法
连接远程服务器CredSSP加密Oracle修正报错解决办法: 打开注册表,快捷输入 "regedit"(类似找命令提示符 输入 cmd 一样)找文件夹 路径:HKLM(缩写)\S ...
- 为office添加繁简体转换
为office添加繁简体转换 本人所在的公司是一间港资公司,很多香港同事习惯繁体,而我们内地的同事则习惯简体,于是免不了要进行繁简体转换,这时候就要装一个office的插件来达到这样的功能,如下: 1 ...
- 计算机科学界至今未解决的四大难题
作者:Shalitha Suranga 译者:弯月 责编:张文 出品:CSDN(ID:CSDNnews) 在现实生活中,很多难题的解决方案都用到了计算机科学的基础理论.例如, Git 分布式版 ...
- ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法
ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载) 10小时前 ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载) 分类: ASP.NET| ...
最新文章
- 一段代码到可执行程序所有经历
- VUE 路径拦截, 开放页面, 基于动态路由, 拦截器
- QML中的JavaScript表达式
- Asp.Net.Core WebApi 版本控制
- 关于IE6、7、8下实现盒阴影的几个注意点
- php7 连接mysql插件_php7
- 联姻寺库,一次半斤八两的合作,趣店的奢侈品生意仍看不见未来
- mysql 代替分号_php – mysql FIND_IN_SET()用分号代替逗号
- [洛谷P3346][ZJOI2015]诸神眷顾的幻想乡
- html怎么写java代码_html中怎么写java代码
- javaWeb——servlet的认识及Tomcat动态部署
- 物联网无线通信技术 低功耗WiFi模块 WiFi芯片技术应用
- SQL Server 创建和管理数据表
- oracle查看某个分区的数据,查看oracle表的分区信息
- IPD电源REL-70-4006
- 将 Cpar 文件导入 2019 版的 Carsim 后,无法打开 video+plot 是什么问题?
- Flutter网络请求方式总结
- css3 从左到右自动换行和多行排列方式
- 傻白探索Chiplet,一些相关术语和问题记录(二)
- 用PHP开发APP端微信支付