一、查询Oracle服务端与客户端编码
select userenv('language') from dual;--服务端编码
select parameter,value from nls_database_parameters where parameter like 'NLS_CHARACTERSET';--客户端编码
二、varchar2 与nvarchar2的区别
1、对于英文字符:
2、对于中文字符:
3、不管是中文字符,还是英文字符,nvarchar2(6)都可以存放6个字符
三<1>、LENGTH 与 LENGTHB 的区别
SELECT LENGTH('CANDIDE') "Length incharacters" FROM DUAL;
Length in characters
--------------------
7
The next example assumes a double-bytedatabase character set.
SELECT LENGTHB ('CANDIDE') "Length inbytes" FROM DUAL;
Length in bytes
---------------
14
三<2>、LENGTH 与 LENGTHB 的示例
在不同的数据库,因为字符集的不同,LENGTHB得到的值可能会不一样。如ZHS16GBK采用两个byte位来定义一个汉字。而在UTF8,采用3个byte。
SYS@anqing1(rac1)> SELECT USERENV('LANGUAGE') FROM DUAL;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
SQL>select length('安庆') from dual;
2
SQL>select lengthb('安庆') from dual;
4
SQL>select length('AnQing') from dual;
6
SQL>select lengthb('AnQing') from dual;
6
通过这个示例,我们可以看出来,Length 和 Lengthb 函数的一个重要用处,就是用来判断记录值里是否有中文内容。
如果有中文,那么Length() != Lengthb()
如果没有中文,那么Length() == Lengthb()