oracle中的数据类型:varchar2(byte)和varchar2(char)

原文链接
varchar2(byte) 存储的是字节。

varchar2(char) 存储的是字符。

比如:varchar2(2 byte) 最多可以存储2个字节;varchar2(2 char) 最多可以存储2个字符。

当数据库字符集为 AL32UTF8 时,一个汉字是一个字符,一个汉字占3个字节,varchar2(2 byte) 一个汉字也不能存,varchar2(2 char) 能存2个汉字。

当数据库字符集为 ZHS16GBK时,一个汉字是一个字符,一个汉字占2个字节,varchar2(2 byte) 能存1个汉字,varchar2(2 char) 能存2个汉字。

那么默认情况下,在指定数据类型为 varchar2(2) 时是什么情况呢?

这跟数据库中的一个参数有关: NLS_LENGTH_SEMANTICS

select name,value from v$parameter where name='nls_length_semantics';

NAME                           VALUE
------------------------------ ------------------------------
nls_length_semantics BYTE

在plsql执行查询

--1. 查看数据库NLS_LENGTH_SEMANTICS参数的值(这个值只有2个值可选,byte,char,默认是byte)
select * from nls_database_parameters t where t.parameter='NLS_LENGTH_SEMANTICS';

在这里插入图片描述

如果该参数的值为 byte ,则 varchar2(2) 等同于 varchar2(2 byte),这是默认情况。

在orcale默认参数 NLS_LENGTH_SEMANTICS且用的是utf-8下
orcale和mysql的对比

1、oracle的varcher2的计算单位是字节,mysql的varchar的计算单位是字符;

2、在utf-8下oracle的vachar2保存一个汉字要3个字节,mysql的varchar需要一个字符;

3、在保存数字和字母的时候oracle的vachar2占一个字节,mysql的varchar需要一个字符。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值