sql - 前导长度是什么意思?
问题描述
我正在从谷歌检查 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个字节?
解决方案
数据类型用CHAR()
字符填充字符串。因此,对于'ORATABLE'
,它看起来像:
'ORATABLE '
12345678901234567890
“前导长度”是开头的两个字节,用于指定字符串的长度。需要两个字节,因为一个字节是不够的。两个字节允许长度最大为 65,535 个单位;一个字节只允许长度不超过 255。
重要的是两者都CHAR()
使用VARCHAR2()
相同的内部格式,所以没有什么理由起诉CHAR()
. 就个人而言,我只会将它用于固定长度的代码,例如 ISO 国家代码或美国社会安全号码。
推荐阅读
- python - python中的加权最小绝对回归?
- vue.js - Feathers vuex:刷新后用户不再登录
- flutter - 使用应用图标打开应用时获取所有通知消息(如果有)
- laravel - Vuetify 中的未知自定义元素
- python - 散景:触发回调后,Hovertool 在旧实例上堆叠
- vba - 如何创建邮件项?
- javascript - 在服务器端代码命中之前获取 AjaxUpload 中的 onComplete
- r - 基于条件的R数据表分组并根据条件获取计数
- javascript - 如何使用 Javascript 读取具有自动生成的文档 ID 的 Firebase 文档
- vb.net - IsNumeric() 允许最后的值减去