select userenv('language') from dual;--服务端编码
select parameter,value from nls_database_parameters where parameter like 'NLS_CHARACTERSET';--客户端编码
1、对于英文字符:
varchar2(6)可以最多存放6个字符
2、对于中文字符:
数据库字符集为UTF-8,varchar2(6) 最多存放2个字符
数据库字符集为ZHS16GBK,varchar2(6) 最多存放3个字符
3、不管是中文字符,还是英文字符,nvarchar2(6)都可以存放6个字符
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
在不同的数据库,因为字符集的不同,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()