Oracle 专题
专题目录
您的位置:database > Oracle专题 > Oracle Varchar2类型
Oracle Varchar2类型
作者:--    发布时间:2019-11-20

在本教程中将学习oracle varchar2数据类型以及如何使用它来定义可变长度的字符串列。

oracle varchar2数据类型简介

要存储可变长度的字符串,可以使用oracle varchar2数据类型。 varchar2列可以存储14000字节的值。 这意味着对于单字节字符集,最多可以在varchar2列中存储4000个字符。

当使用varchar2创建表时,必须指定最大字符串长度(以字节为单位):

varchar2(max_size byte)

或以字符 -

varchar2(max_size char)

默认情况下,如果没有在max_size之后显式指定bytechar,则oracle使用byte。 换句话说,varchar2(n)列最多可以容纳n个字节的字符。

如果存储大小超过varchar2列最大长度的字符串,则oracle发出错误。

例如,如果定义最大长度为20varchar2列,则在单字节字符集中最多可以存储20个字符。 如果存储了21个或更多字符,则oracle返回错误。

另外,如果在varchar2(20)列中存储10个字符,则oracle仅使用10个字节进行存储,而不是20个字节。 因此,使用varchar2数据类型可以帮助您节省表使用的空间。

比较varchar2值时,oracle使用非填充比较语义。

oracle varchar2最大长度

从oracle 12c开始,可以为varchar2数据类型最大长度为:32767。 oracle使用max_string_size参数来控制最大长度。 如果max_string_sizestandard,则varchar2的最大大小是4000字节。 如果max_string_sizeextended,则varchar2的大小限制为32767

要获取max_string_size参数的值,请使用以下查询:

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

执行上面查询语句,得到以下结果 -

show parameter max_string_size;

oracle varchar2的例子

以下语句创建一个名为econtacts的新表来存储员工的紧急联系人 -

create table econtacts (
    econtact_id number generated by default as identity primary key,
    employee_id number not null,
    first_name  varchar( 20 ) not null,
    last_name   varchar( 20 ) not null,
    phone       varchar( 12 ) not null,
    foreign key( employee_id ) references employees( employee_id ) 
        on  delete cascade
);

econtacts表有三个varchar2列:first_namelast_namephone

以下语句将新行插入到econtacts表中:

insert
    into
        econtacts(
            employee_id,
            first_name,
            last_name,
            phone
        )
    values(
        1,
        'branden',
        'wiley',
        '202-555-0193'
    );

它按预期工作,因为输入数据不会超过varchar2列的最大长度。

但是,以下语句未能成功插入:

insert
    into
        econtacts(
            employee_id,
            first_name,
            last_name,
            phone
        )
    values(
        10,
        'pablo diego jose francisco',
        'gray',
        '202-555-0195'
    );

由于输入名字超过了first_name列的最大长度,oracle发出以下错误:

sql error: ora-12899: value too large for column "ot"."econtacts"."first_name" (actual: 26, maximum: 20)

在本教程中,您已经了解了oracle varchar2以及如何使用varchar2数据类型在表中定义可变长度字符串列。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册