如何在Oracle中转换列的字符集
我有一个表,我们的服务提供商插入UNICODE数据,但我的oracle characterset是WE8ISO8859P1. 现在我得到的数据我使用oracle的功能,但它显示??????? 从client_campaigns中选择CONVERT(消息,’AL32UTF8′,’WE8ISO8859P1′) 更多消息库存是CLOB类型. 由于dataloss,我无法更改数据库的字符集,其次是生产和字符集的更改可能会导致错误. 现在请指导我如何将这些数据作为UNICODE获取? 问候, 解决方法插入字符(VARCHAR2或CHAR或CLOB)列的字符串将始终转换为数据库字符集.这意味着在您的情况下插入的数据将转换为WE8ISO8859P1.由于UNICODE不是WE8ISO8859P1的子集,因此您将丢失信息.您的字符集中不可用的某些字符会转换为?插入时你该怎么办?新数据有两种选择: >将列的数据类型修改为NVARCHAR2而不是VARCHAR2(或NCLOB而不是CLOB). NVARCHAR2是专门设计的,因此您可以处理多字节字符而无需修改主db字符集.有关VARCHAR2和NVARCHAR2之间的差异,请参阅this SO question.还要注意一些应用may not work correctly with NVARCHAR2. 如果给出选择,我会选择(1)或(3).使用RAW会禁用许多功能并增加复杂性. 显然,只有数据库可用的数据才能恢复先前的数据:您必须在新结构中重新导入旧数据. (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |