当前位置:首页 > SCHOOL > Oracle字典 > 正文内容

Oracle Varchar2

admin3年前 (2022-03-26)Oracle字典8920

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

Oracle VARCHAR2数据类型简介

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

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

VARCHAR2(max_size BYTE)

或以字符 

VARCHAR2(max_size CHAR)

默认情况下,如果没有在max_size之后显式指定BYTE或CHAR,则Oracle使用BYTE。 换句话说,VARCHAR2(N)列最多可以容纳N个字节的字符。

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

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

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

比较VARCHAR2值时,Oracle使用非填充比较语义。

Oracle VARCHAR2最大长度

从Oracle 12c开始,可以为VARCHAR2数据类型最大长度为:32767。 Oracle使用MAX_STRING_SIZE参数来控制最大长度。 如果MAX_STRING_SIZE是STANDARD,则VARCHAR2的最大大小是4000字节。 如果MAX_STRING_SIZE为EXTENDED,则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_name,last_name和phone。

以下语句将新行插入到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)
 您阅读本篇文章共花了: 

免责声明
本站内容均为博客主本人日常使用记录的存档,如侵犯你的权益请联系:lifei@zaiheze.com 546262132@qq.com 沟通删除事宜。本站仅带访问端口形式使用,已杜绝搜索引擎爬取。
返回列表

上一篇:Oracle NChar

下一篇:Oracle NVarchar2

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。