Oracle字符串数据类型简述

去 IOE 的前提是了解,才能谈去。Oracle 提供了22种数据类型,其中专门用于存储字符串的有6类。

字符串相关数据类型一览

  • CHAR : 定长类型,用 空格 来填充保证达到最大的长度;最多存储 2000 字节信息。
  • NCHAR : 与 CHAR 的差异是,支持 Unicode 格式的数据。
  • VARCHAR2 : 即 VARCHAR,变长类型,末尾不填充 空格 ;最多 4000 字节。(12c 后,可支持32767字节)
  • NVARCHAR2 : 与 VARCHAR2的差异是,支持 Unicode 格式的数据。
  • RAW : 变长的二进制数据类型,不会发生数据字符集转换;最多 2000 字节。(12c 后,可支持32767字节)
  • CLOB :10g后支持最多存储 (4GB-1)×(数据库块大小) 字节;受字符集转换的影响。

字符串语法

类型< SIZE> 的说明示例
VARCHAR2( < SIZE > < BYTE CHAR > )字节或字符数,值域(1-4000),整数。A VARCHAR2( 20 BYTE )
CHAR( )字节或字符数,值域(1-2000),整数。A CHAR( 20 CHAR )
NVARCHAR2( )字符数,值域 >0,上限与字符集有关,整数。A NVARCHAR2( 20 )
NCHAR2( )字符数,值域 >0,上限与字符集有关,整数。A NCHAR2( 20 )

字符串的存储

CHAR、 VARCHAR2、 NCHAR、 NVARCHAR2都采用相同的存储格式.即 CHAR、NCHAR 实际是基于VARCHAR2、NVARCHAR2实现。

底层数据格式设计

  • 数据块中,分为2部分

    • 数据长度:1-3个字节
    • 数据本身
  • 数据长度的设计

    • 空数据即 NULL:单字节值 0xFF
    • 长度≤ 250:单字节值 0x01-0xFA
    • 长度>250:3字节值表示

      • 第1标志字节固定为:0xFE
      • 第2、3字节为实际长度

示例

  • VARCHAR(20) Hello World
<- ->
11Hello World
^长度^
  • CHAR(80) Hello World
<- ->
80Hello World
^长度^ ^69个空格^

注意点

  • CHAR、NCHAR 空间效率利用率低,因占用空间与数据无关,仅于列定义有关。
  • CHAR、NCHAR 容易给应用带来混乱,因数据末尾会补充若干空格,导致搜索结果经常非预期。
  • 设置 MAX_STRING_SIZE为 EXTENDED后,VARCHAR2,NVARCHAR2,RAW才可以支持32767字节的存储。Oracle 默认是关闭,因启用后想再返回 STANDARD 会很痛苦。

查询工具推荐: DUMP 函数

作用:显示某个数据的数据类型代码、长度(单位为字节)及其在数据库内部实际存储的形式(字符集名),语法为:

DUMP( expression [, return_format] [, start_position] [,length])

扩展

  • 关于字符集,请搜索 NLS(National Language Support)相关资料。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值