一个很菜的问题,是关于vsize()函数的

hawkcai 2003-10-15 09:59:49
vsize()函数是用来计算数值的存储长度的(字节数),我在实验数值型的数据时搞不清其是如何在数据库中占位的,哪位高手能给我解释一下,谢谢!
具体问题如下:
1 select
2 vsize(1),vsize(11),
3 vsize(111),vsize(1111),
4 vsize(11111),vsize(111111),
5 vsize(1111111),vsize(11111111),
6* vsize(111111111),vsize(1111111111) from dual
SQL> /

VSIZE(1) VSIZE(11) VSIZE(111) VSIZE(1111) VSIZE(11111) VSIZE(111111) VSIZE(1111111) VSIZE(11111111) VSIZE(111111111) VSIZE(1111111111)
---------- ---------- ---------- ----------- ------------ ------------- -------------- --------------- ---------------- -----------------
2 2 3 3 4 4 5 5 6 6
请问oracle是如何计算整型数据的占位的?
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuyang_wang 2003-10-15
  • 打赏
  • 举报
回复
vsize(0) = 1
vsize(1) = 2
vsize(10) = 2
vsize(11) = 2
vsize(100) = 2
vsize(101) = 3
vsize(1000) = 2
vsize(1001) = 3
vsize(10000) = 2
vsize(10001) = 4
vsize(100000) = 2
vsize(100001) = 4
vsize(1000000) = 2
vsize(1000001) = 5
vsize(10000000) = 2
vsize(10000001) = 5
vsize(100000000) = 2
vsize(100000001) = 6
bzszp 2003-10-15
  • 打赏
  • 举报
回复
VSIZE
Syntax


Purpose
Returns the number of bytes in the internal representation of expr. If expr is null, this function returns null.

Example
SELECT ename, VSIZE (ename) "BYTES"
FROM emp
WHERE deptno = 10;

ENAME BYTES
---------- ----------
CLARK 5
KING 4
MILLER 6

帮助写得很笼统,例子也不好
测试了一下没发现规律
SQL> select vsize(0) from dual;

VSIZE(0)
---------
1

SQL> select vsize(1) from dual;

VSIZE(1)
---------
2
SQL> select vsize(1000) from dual;

VSIZE(1000)
-----------
2

SQL> select vsize(1001) from dual;

VSIZE(1001)
-----------
3

SQL> select vsize(1000000000000) from dual;

VSIZE(1000000000000)
--------------------
2

SQL> select vsize(-1) from dual;

VSIZE(-1)
---------
3

SQL>

关注!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧