oracle的nvarchar2类型常见问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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 关系型数据库 数据库
分享到
取消 提交回答
全部回答(0)
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程