前导长度是什么意思?

时间:2019-05-26 10:24:51

标签: sql oracle

我正在检查Google的char与varchar2之间的区别。在此link中,我遇到了领先长度一词。那里写着

假设您将字符串“ ORATABLE”存储在CHAR(20)字段和VARCHAR2(20)字段中。 CHAR字段将使用22个字节(前导长度为2个字节)。 VARCHAR2字段将仅使用10个字节(字符串为8个字节,前导长度为2个字节)。

Q1 :如果字符串为8个字符(1个字节= 1个字符),那么char字段将如何使用22个字节?

第二季度是什么?为什么会占用2个字节?

1 个答案:

答案 0 :(得分:2)

CHAR()数据类型用字符填充字符串。因此,对于'ORATABLE',它看起来像:

'ORATABLE            '
 12345678901234567890

“前导长度”是开头的两个字节,用于指定字符串的长度。因为一个字节不够,所以需要两个字节。两个字节的最大长度为65,535个单位;一个字节最多只能允许255个长度。

要点CHAR()VARCHAR2()使用相同的内部格式,因此没有理由起诉CHAR()。就我个人而言,我只会将其用于固定长度的代码,例如ISO国家/地区代码或美国的社会保险号。