开发者社区> 问答> 正文

oracle的nvarchar2类型常见问题

性能优化/故障排除/长期代维     云库管   www.yundba.com








nvarchar2类型,数字和字母都要占用两个字节,这一点比较特殊




1.阿里云的网友oracle数据库遇见怪异的问题现象:
----------------------
Oracle中NVARCHAR2字符集不匹配问题
Oracle中在做字符匹配时 遇到 NVARCHAR2 类型时报错,提示 字符集不匹配。
Oracle substr 截取nvarchar2 出现问题


2.测试过程:
----------------------


select parameter, value
from nls_database_parameters
where parameter like '%CHARACTERSET%'
order by parameter;


PARAMETER                      VALUE
------------------------------ ---------------
NLS_CHARACTERSET               ZHS16GBK
NLS_NCHAR_CHARACTERSET         AL16UTF16






drop table test4
create table test4(c1_var  varchar2(10), c2_nvar nvarchar2(10));


insert into test4 (c1_var, c2_nvar) values ('1234567890', '1234567890');
insert into test4 (c1_var, c2_nvar) values ('中国', '中国');
insert into test4 (c1_var, c2_nvar) values ('abcd', 'abcd');
commit;




用substr按字符模式读取varchar2和nvarchar2


select substr(c1_var,1,2), substr(c2_nvar,1,2) from test4


---------------------------------------------------------




       SUBSTR(C1_VAR,1,2)    SUBSTR(C2_NVAR,1,2)
--------------------------------------------------    
              12                12
            中国                中国
              ab                ab


用substr按字节模式读取varchar2和nvarchar2


select substrb(c1_var,1,2), substrb(c2_nvar,1,2) from test4


       SUBSTRB(C1_VAR,1,2)        SUBSTRB(C2_NVAR,1,2)
---------------------------------------------    
              12                1
              中                中
               ab                a            

3.结论:
---------------------------------
nvarchar2列类型下,对于数字和字母都要占用两个字节,这一点比较特殊。

展开
收起
oracle数据库技术支持www.yunDBA.com 2016-12-01 16:06:08 4364 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像