Oracle数据库中不同类型数据占用的字节长度

本文详细介绍了Oracle数据库中VARCHAR2类型数据在不同字符集下存储汉字的字节数,包括GBK、UTF-8、UTF-32和UTF-16编码的占用情况,并提供了查询数据库编码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念区分

首先要明确一个基础概念,oracle数据库可储存字节也可储存字符,默认储存字节。

区分如下:

  •       VARCHAR2(100 CHAR),表示最多就可以存储100个汉字
  •       VARCHAR2(100)与VARCHAR2(100 BYTE)意义相同,最多可以存储多少个汉字就要视数据库字符集编码决定

二、 根据ORACLE字符集判断能存多少汉字

  • 字符集是GBK,一个汉字是2个字节,vachar2(100)可以储存 50 个汉字
  • UTF- 8编码:兼容ASCII编码;拉丁文、希腊文等使用两个字节;包括汉字在内的其它常用字符使用三个字节;剩下的极少使用的字符使用四个字节。 vachar2(100)可储存  25~33 个汉字
  • UTF-32编码:固定使用4个字节来表示一个字符,但存在空间利用效率的问题。 vachar2(100)可储存  25 个汉字
  • UTF-16编码:对相对常用的60000余个字符使用两个字节进行编码,其余的使用4字节。vachar2(100)可储存  25~33 个汉字

三、如何查看ORACLE数据库使用的编码

1、在可视化工具或者oracle中直接输入以下代码

select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'

我使用的PL/SQL查询出来的结果为GBK编码,如图所示:

 

如果想直接查询汉字所占用的字节,可使用以下代码:

SELECT LENGTHB('汉字') FROM DUAL;

 

 

仅仅只是整理自己开发过程中解决的疑惑,欢迎大神指正,不喜勿喷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值