小编典典

列数据类型中 BYTE 和 CHAR 的区别

all

在 Oracle 中,有什么区别:

CREATE TABLE CLIENT
(
 NAME VARCHAR2(11 BYTE),
 ID_CLIENT NUMBER
)

CREATE TABLE CLIENT
(
 NAME VARCHAR2(11 CHAR), -- or even VARCHAR2(11)
 ID_CLIENT NUMBER
)

阅读 99

收藏
2022-08-01

共1个答案

小编典典

让我们假设数据库字符集是 UTF-8,这是最新版本的 Oracle 中推荐的设置。在这种情况下,某些字符需要超过 1 个字节才能存储在数据库中。

如果将字段定义为VARCHAR2(11 BYTE),Oracle 最多可以使用 11 个字节进行存储,但您实际上可能无法在字段中存储 11
个字符,因为其中一些需要超过一个字节来存储,例如非英文字符。

通过定义字段,VARCHAR2(11 CHAR)告诉 Oracle 它可以使用足够的空间来存储 11
个字符,无论存储每个字符需要多少字节。单个字符最多可能需要 4 个字节。

2022-08-01