首页 > 解决方案 > 前导长度是什么意思?

问题描述

我正在从谷歌检查 char 与 varchar2 之间的区别。我在这个链接中遇到了一个词LEADING LENGTH。那里写着

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

Q1 : 如果字符串是 8 个字符 if (1 byte = 1 char),char 字段将如何使用 22 个字节?

Q2前导长度是多少?为什么它占用2个字节?

标签: sqloracle

解决方案


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

'ORATABLE            '
 12345678901234567890

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

重要的是两者都CHAR()使用VARCHAR2()相同的内部格式,所以没有什么理由起诉CHAR(). 就个人而言,我只会将它用于固定长度的代码,例如 ISO 国家代码或美国社会安全号码。


推荐阅读