如何解决如何在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] 举报,一经查实,本站将立刻删除。