select rawtohex(UNISTR('\0436')) from dual
返回0436
update my_table set my_column = UNISTR('\0436') where id = 248149;
SELECT rawtohex(my_column) from my_table where id = 248149;
返回E6
所以我把符号放在UTF8中并在CP1251中取回。为什么这样?
答案 0 :(得分:0)
您正在将unicode
字符串保存到varchar2
列中。请考虑将它们保存在nvarchar2
类型列中。
create table my_table
(
id number(10),
my_column varchar2(100),
my_column_uni nvarchar2(100)
);
insert into my_table values(1, UNISTR('\0436'), UNISTR('\0436'));
commit;
select rawtohex(my_column), rawtohex(my_column_uni)
from my_table
where id = 1;
对于varchar2列,输出为E6
,对于nvarchar2列,输出为0436
。 Oracle会根据nls parameters更改编码,您可以在其中使用NLS_CHARACTERSET
和NLS_NCHAR_CHARACTERSET
NLS参数。您可以通过查询您的特定参数。
select *
from nls_database_parameters