我有一个Oracle数据库。我必须执行一些填充nvarchar2列的插入脚本。 insert语句包括一些特殊字符,如“(左引号)”(右引号),™(商标符号)。
create table myTable ( column1 number, column2 nvarchar2(50) );
insert into myTable (column1, column2) values(1, 'Lorem Ipsum™ Sed “dolor sit amet”');
我在SQLDeveloper Editor上运行查询。但是特殊字符会替换为问号,如下所示:
select * from myTable;
Column1 Column2
------ ------------------------------
1 Lorem Ipsum? Sed ?dolor sit amet?
但是当我使用SQLDeveloper GUI向表添加新行时,它很好like this image
数据库NLS参数在这里:
SELECT * FROM NLS_DATABASE_PARAMETERS where PARAMETER in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
PARAMETER VALUE
------------ ------------
NLS_CHARACTERSET WE8ISO8859P9
NLS_NCHAR_CHARACTERSET AL16UTF16
如何正确插入上面提到的字符?
答案 0 :(得分:0)
将UNISTR
用于可能在不同环境中无效的Unicode字符:
create table myTable ( column1 number, column2 nvarchar2(50) );
insert into myTable (column1, column2)
values(1, 'Lorem Ipsum' || unistr('\2122') || ' Sed ' ||
unistr('\201C') || 'dolor sit amet' || unistr('\201D'));