Oracle数据库的varchar2和nvarchar2、LENGTH 与 LENGTHB 的区别

一、查询Oracle服务端与客户端编码

select userenv('language') from dual;--服务端编码
select parameter,value from nls_database_parameters where parameter like 'NLS_CHARACTERSET';--客户端编码


二、varchar2 与nvarchar2的区别

1、对于英文字符:

  varchar2(6)可以最多存放6个字符

2、对于中文字符:

  数据库字符集为UTF-8,varchar2(6) 最多存放2个字符

  数据库字符集为ZHS16GBK,varchar2(6) 最多存放3个字符

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值