首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OracleSQL12c中将Unicode字符转换为UTF8 (十进制)-不使用转换函数

在OracleSQL12c中将Unicode字符转换为UTF8 (十进制)-不使用转换函数
EN

Stack Overflow用户
提问于 2020-07-29 09:56:21
回答 2查看 856关注 0票数 0

当我不得不将Oracle连接器从11g更改为12c时,查询就不再起作用了:从表中选择getunicodetransl(列)。在11g中,它没有出错,但在12c版本中,它给出了错误"ORA-00904:“GETUNICODETRANSL:无效标识符”。

我如何替换这个函数,这样我就可以得到相同的结果了?例如,这个函数将值“!9LQND6”转换为"33369LQND6",这意味着它将!替换为值33$E 211替换为值E 11236E 213,这与UTF8等效。

我尝试过多种方法来替换这个函数,但是我无法得到相同的结果。在我看来,最正确的选项是“从表选择转换(列,'utf8')”,但结果仍然是"!$9LQND6“。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-29 11:25:54

Oracle中没有这样的功能。有人在你的11g数据库中创建了这个函数。获取代码并将其部署到您的12c中。

票数 0
EN

Stack Overflow用户

发布于 2020-07-29 11:33:15

“!$9 LQND6” UTF8。

UTF8指的是100多万个字符。因此,可以肯定地说,几乎所有您知道的特殊字符都包含在UTF8中。因此,“!$9 9LQND6 6”将永远保持在UTF8中

您要寻找的编码功能不是标准转换。还请注意,当您将"!$9LQND6“转换为"33369LQND6”时,不能将其转换回它的原始值。当你得到3336你不知道这些是数字还是一些特殊字符的ascii代码.

您能得到的最接近的功能是浏览所有字符的函数:

代码语言:javascript
复制
    Declare
        Char_ varchar2(10);
        Output varchar2(1000);
    begin    
        for i in 1..length(Text)
        loop
            Char_  := substr(Text,i,1);
            if upper(Char_)  not in ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') then 
                Output := Output || ascii(Char_);
            else
                Output := Output|| Char_;
            end if;
        end loop
        return Output;
    end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63151012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档