暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle字符串数据类型简述

云计算布道师 2019-01-17
564

去 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( <SIZE><BYTE|CHAR> )字节或字符数,值域(1-2000),整数。A CHAR( 20 CHAR )
NVARCHAR2( <SIZE> )字符数,值域 >0,上限与字符集有关,整数。A NVARCHAR2( 20 )
NCHAR2( <SIZE> )字符数,值域 >0,上限与字符集有关,整数。A NCHAR2( 20 )

字符串的存储

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

底层数据格式设计

  • 数据块中,分为2部分

    • 数据长度:1-3个字节

    • 数据本身

  • 数据长度的设计

    • 第1标志字节固定为:0xFE

    • 第2、3字节为实际长度

      • 空数据即 NULL:单字节值 0xFF

      • 长度≤ 250:单字节值 0x01-0xFA

      • 长度>250: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)相关资料。


文章转载自云计算布道师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论