暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何正确识别特殊字符的正确ASCII值。

ASKTOM 2018-12-12
829

问题描述



列文本包含撇号作为特殊字符。做了一个垃圾场。你可以看到下面的结果。如何正确搜索这些特殊字符,然后用撇号替换它们?您会看到第一行具有特殊字符的ASCII值26。第二行似乎以某种方式包含特殊字符的239,191,189。你能帮我弄清楚这件事吗?最终结果应该是 “儿童医院”。谢谢

select text,-- dump(text), 
substr(text,8,3), dump(substr(text,8,3)) from 
(
select 'CHILDRENS HOSPITAL' as text from dual
union
select 'CHILDREN�S HOSPITAL' as text from dual
);

TEXT                 SUBSTR(TEXT,8,3) DUMP(SUBSTR(TEXT,8,3))
CHILDRENS HOSPITAL NS                 Typ=1 Len=3: 78,26,83
CHILDREN�S HOSPITAL N�S                 Typ=1 Len=5: 78,239,191,189,83
复制




专家解答

您可以使用chr() 返回给定ASCII代码的字符。和ASCII来获取给定字符的代码。

因此,您可以用撇号或其他替换chr (26) 的实例:

select ascii ( ' ' ) space, ascii ( '''' ) apostrophe,
       replace (
        'Space to apostrophe', chr ( 32 ), chr ( 39 ) 
       ) str
from   dual;

SPACE   APOSTROPHE   STR                   
     32           39 Space'to'apostrophe   
复制

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论