oracle字符 varchar2 nvarchar2

[color=red]A
1:不管是GB还是BIG5,它都是用两个字节来保存一个汉字
2:一个汉字的两个字节中,第一个字节的字符>127,第二个
字节就不一定了
3:例如:

[code] char cStr[81]="abc123你好123abc";
for(int i=0;i<strlen(cStr);i+=2)//注意,i+=2
{
if(cStr[i]>127)//第i与i+1这两个字节是一个汉字
{
do something
}
}[/code]

[color=red]B.[/color]想测试一个汉字在各种字符集中到底占用多少字节,请尝试一下语句
[code] select lengthb('汉') from dual;[/code][/color]

[color=red]注意 ![/color]
[color=blue]varchar早就建议不使用了,应该用VARCHAR2。nvarchar估计也不使用的,也应该是使用nvarchar2。
VARCHAR2(size),可变长度的字符串,其最大长度为 size 个字节。size 的最大值是 4000,而最小值是 1。您必须指定一个 VARCHAR2 的 size。
NVARCHAR2(size),可变长度的字符串,依据所选的国家字符集,其最大长度为 size 个字符或字节。size 的最大值取决于存储每个字符所需要的字节数,其上限为 4000 个字节。您必须为 NVARCHAR2 指定一个 size。
VARCHAR2与NVARCHAR2的不同之处在于它们存放信息占用的空间不同。VARCHAR2存放的英文字符只占一个字节,而nvarchar2依据所选的字符集,大多为两个。[/color]

[color=red]关于什么时候用到nchar等国家字符集[/color]

只有要用到unicode时才会用到nvarch,比如中文的很多冷僻字.
oracle对uncode的解决有两者方案:一种时数据库级的这要求在安装数据库的时必须选择unicode数据库字符集,这样不管是varcha还是nvarchar都可以存储unicode,也就是说两者没有区别.
另一种是数据类型级,即国家字符集,也就是nvarchar2,就是说当你的数据库字符集不是unicode,比如ZHS16GBK,但又想在个别字段存储诸如中文冷僻字的unicode字符时,就可以选择nvarchar2,但必须9i版本以上的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值