微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Oracle数据库中正确插入一些特殊字符,例如¤

如何解决如何在Oracle数据库中正确插入一些特殊字符,例如¤

我有一个Oracle数据库。我必须执行一些填充NVARCHAR2列的插入脚本。插入语句包含一些特殊字符,例如¤

Insert into myTable (column1,column2) values(1,'ABC-XYZ-SET-00985203-INS-01_2_10 | (100-BASE¤BASE ART¤3) | (100-SHELL¤SHELL ART¤1) |');

当我运行查询时,所有特殊字符都被替换为¿符号

数据库NLS参数如下:

NLS_NCHAR_CHaraCTERSET        UTF8                                                            
NLS_CHaraCTERSET              WE8ISO8859P1

我在字符串中多次重复了特殊字符。 要正确插入上面提到的¤字符,我该怎么做?

解决方法

首先,您还需要在支持Unicode字符的客户端上设置NLS_LANG。 然后,您可以使用N' nchar文字:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Literals.html#GUID-192417E8-A79D-4A1D-9879-68272D925707

Insert into myTable (column1,column2) 
values(1,N'ABC-XYZ-SET-00985203-INS-01_2_10 | (100-BASE¤BASE ART¤3) | (100-SHELL¤SHELL ART¤1) |');

在{

之前的通知N ,

插入非ASCII字符的最安全方法可能是使用UNISTR函数。使用Unicode编码值而不是实际字符较不方便,但也不太可能被以后运行您的代码的任何程序误解。

Insert into myTable (column1,column2) values
(
    1,'ABC-XYZ-SET-00985203-INS-01_2_10 | (100-BASE'||unistr('\00A4')||'BASE ART'||unistr('\00A4')||
    '3) | (100-SHELL'||unistr('\00A4')||'SHELL ART'||unistr('\00A4')||'1) |'
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。