§ Oracle兼容-函数-VSIZE()函数


§ 1. 语法

VSIZE( expr )
1

§ 2. 定义和用法

VSIZE() 函数的作用是返回 expr 的内部存储大小值。

参数 expr 是要进行分析的表达式,可以是数字或字符串等,也可以是各个类型的值,但不可为 BLOB 类型及其派生类型。

§ 3. Oracle兼容说明

  • 由于Oracle与GreatSQL的内部存储机制不同,VSIZE() 函数用于评估实际消耗的存储空间大小,因此返回值可能与Oracle不一致。
  • 临时变量 @var 会使用其他中间表示式,直到被调用前才转换,目前不支持此类变量。

§ 4. 示例

-- 1. 参数expr为NULL
greatsql> SELECT VSIZE(NULL);
+-------------+
| VSIZE(NULL) |
+-------------+
|        NULL |
+-------------+

-- 2. 参数expr为空字串时,被视为NULL
greatsql> SELECT VSIZE('');
+-----------+
| VSIZE('') |
+-----------+
|      NULL |
+-----------+

-- 3. expr 可以是常量
greatsql> SELECT VSIZE(true), VSIZE(false);
+-------------+--------------+
| VSIZE(true) | VSIZE(false) |
+-------------+--------------+
|           1 |            1 |
+-------------+--------------+

greatsql> SELECT VSIZE('3306'), VSIZE(3306);
+---------------+-------------+
| VSIZE('3306') | VSIZE(3306) |
+---------------+-------------+
|             6 |           8 |
+---------------+-------------+

greatsql> SELECT VSIZE(date(NOW())), DATE(NOW());
+--------------------+-------------+
| VSIZE(date(NOW())) | DATE(NOW()) |
+--------------------+-------------+
|                  3 | 2023-11-07  |
+--------------------+-------------+

greatsql> SELECT VSIZE(STR_TO_DATE(SYSDATE(), '%Y-%m-%d %H:%i:%s')), STR_TO_DATE(SYSDATE(), '%Y-%m-%d %H:%i:%s');
+----------------------------------------------------+---------------------------------------------+
| VSIZE(STR_TO_DATE(SYSDATE(), '%Y-%m-%d %H:%i:%s')) | STR_TO_DATE(SYSDATE(), '%Y-%m-%d %H:%i:%s') |
+----------------------------------------------------+---------------------------------------------+
|                                                  8 | 2023-11-07 11:18:56                         |
+----------------------------------------------------+---------------------------------------------+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

greatsql-wx