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

21 浏览
0 Comments

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

在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
)

\"之间有什么区别?

admin 更改状态以发布 2023年5月24日
0
0 Comments

其中一个精确地包含11个字节的空间,另一个精确地包含11个字符的空间。一些字符集(如Unicode变体)可能会使用超过每个字符一字节的空间,因此11字节字段的空间取决于编码方式,可能不足11个字符。

另请参阅http://www.joelonsoftware.com/articles/Unicode.html

0
0 Comments

假设数据库字符集为UTF-8,这是Oracle最近版本中推荐的设置。在这种情况下,有些字符在数据库中需要存储超过1字节的空间。

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

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

0