返回首页

gbase数据、南大通用产品文档:GBase8s演示数据库

更新日期:2024年09月11日

DB-Access 实用程序随 GBase 8s 数据库服务器产品一起提供,它包括一个或多个以
下演示数据库:

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 2 -
stores_demo 数据库以一家虚构的体育用品批发商的有关信息举例说明了关系模式。
GBase 8s 出版物中的许多示例均基于 stores_demo 数据库。
superstores_demo 数据库举例说明了对象关系模式。
superstores_demo 数据库包含扩
展数据类型、类型和表继承以及用户定义的例程的示例。
有关如何创建和填充演示数据库的信息,请参阅《GBase 8s DB-Access 用户指南》。
有关数据库及其内容的描述,请参阅《GBase 8s SQL 指南:参考》。
用于安装演示数据库的脚本位于 UNIX™ 平台上的 $GBASEDBTDIR/bin 目录和
Windows™ 环境中的 %GBASEDBTDIR%\bin 目录中。

子查询(内部 SELECT 语句,其中一个 SELECT 语句嵌套在另一个 SELECT 语句中)
可以返回多行或多个表达式,也可以不返回任何结果。每个子查询必须用括号分隔,并且
都必须包含一个 Projection 子句和一个 FROM 子句,子查询本身可以包含其它子查询。
数据库服务器支持下列上下文中的子查询:

嵌套在另一个 SELECT 语句的 Projection 子句中的 SELECT 语句

嵌套在另一个 SELECT 语句中的 WHERE 子句中的 SELECT 语句

嵌套在另一个 SELECT 语句的 FROM 子句中的 SELECT 语句
还可以在 INSERT 、DELETE 、MERGE 或 UPDATE 语句(子查询有效)的各种子句中
指定子查询。
Projection 子句或 WHERE 子句中的子查询可以是相关的或是不相关的。当子查询产生的
值取决于包含它的外部 SELECT 语句产生的值时,该子查询是相关的。有关更多信息,请
参阅相关子查询。
任何其它类型的子查询都被认为是不相关的。在 SELECT 语句的 FROM 子句中,只有不
相关的子查询才是有效的。

Oracle引擎函数

ORACLE_ASCII()
将字符转换为ASCII 码。
语法
ASCII(single_character)
当参数为’’(空串)时,返回NULL,ASCII()函数返回0

ORACLE_COSH()
语法
ORACLE_COSH(X)
计算X 的双曲余弦值。

ORACLE_CURRENT_TIMESTAMP()
与时区设置有关,返回的秒是系统的,返回的日期和时间是根据时区转换过的。
注意
1)ORACLE 引擎不支持CURRENT_TIMESTAMP 函数。
2)不带oracle_得到up 的时间,带oracle_得到oracle 的时间。

ORACLE_INSTRB()
语法
ORACLE_INSTRB(string1,string2[,start_position[,nth_appearence]])
字符串查找函数,返回字符串位置。
string1:要在此字符串中查找。
string2:要在string1 中查找的字符串。
start_position:从string1 开始查找的位置。可选,默认为1,正数时,从左到右检
索,负数时,从右到左检索。
nth_appearence:查找第几次出现string2。可选,默认为1,不能为负。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 597
注意
如果没有查找到,返回0。

ORACLE_LENGTHB()
语法
ORACLE_LENGTHB (string_para)
返回字符按字节计算长度,
一个汉字的字节长度的计算与oracle 数据库字符集有关,
GBK 和USASCII 字符集下每个汉字字节长度为2,
UTF8 下每个汉字字节长度为3。


ORACLE_LOCALTIMESTAMP()
返回会话中的日期和时间。
语法
select oracle_localtimestamp() from dual;
注意
1)ORACLE 引擎不支持localtimestamp 函数;
2)不带oracle_得到up 的时间,带oracle_得到oracle 的时间。

ORACLE_STDDEV
计算当前行关于组的标准偏离。

ORACLE_STDDEV_POP
该函数计算总体标准偏离,并返回总体变量的平方根,其返回值与VAR_POP 函数
的平方根相同。

ORACLE_TANH()
语法
ORACLE_TANH(X)
计算X 的双曲正切值。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 598
ORACLE_TRIM()
语法
ORACLE_TRIM (string A)
去掉字符串A 的左右空白符号。
ORACLE_TO_CHAR()
用作日期转换。
语法
ORACLE_TO_CHAR ()
表 5-131
函数
返回
描述
示例
Oracle_to_char(timestam
p, text)
text
把 timestamp 转换成
string
Oracle_to_char(sysdate(),'HH12:MI:SS
')
Oracle_to_char(int, text)
text
把 int4/int8 转换成
string
Oracle_to_char(125, '999')
Oracle_to_char(float,
text)
text
把 float4/float8 转换
成 string
Oracle_to_char(125.8, '999D9')
Oracle_to_char(numeric,
text)
text
把 numeric 转换成
string
Oracle_to_char('-125.8', '999D99S')
ORACLE_VAR_POP
该函数返回非空集合的总体变量(忽略null),VAR_POP 进行如下计算:
语法
(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)
ORACLE_VARIANCE
该函数返回表达式的变量,Oracle 计算该变量如下:
如果表达式中行数为1,则返回0;
如果表达式中行数大于1,则返回VAR_SAMP。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 599
ORACLE_SYSDATE()
以“YYYY-MM-DD HH:MI:SS”或“YYYYMMDDHHMISS”格式返回ORACLE
系统的日期时间值,返回的格式取决于该函数是用于字符串还是数字上下文中。
示例
示例1:使用ORACLE_SYSDATE()函数返回ORACLE 系统当前的“日期+时间”。

gbase> SELECT ORACLE_SYSDATE() FROM t;
+---------------------+
| ORACLE_SYSDATE() |
+---------------------+
| 2013-10-12 13:38:18 |
+---------------------+
1 row in set
注意
1)ORACLE 引擎不支持sysdate, oracle_sysdate 函数。
2)不带oracle_得到up 的时间,带oracle_得到oracle 的时间。
ORACLE_TRUNC(date/datetime[, format])
ORACLE_TRUNC 函数返回以指定元素格式截去一部分的日期值。
date/datetime 为必选参数,表示输入的一个日期值
format 为可选参数,表示日期格式,用以指定的元素格式来截去输入的日期值。如
果省略此参数,则由最近的日期截去。
format 支持的类型如下表所示。
表 5-132
参 数
说 明
year
返回当年第一天
yyyy
返回当年第一天
month
返回当月第一天
mm
返回当月第一天
dd
返回当天的日期
hh
得到当天凌晨0 点0 分0 秒的日期
mi
得到当天凌晨0 点0 分0 秒的日期
示例
示例1:返回当年的第一天。

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 600
gbase> SELECT TRUNC(current_date,'year') FROM t;
+----------------------------+
| TRUNC(current_date,'year') |
+----------------------------+
| 2013-01-01 |
+----------------------------+
1 row in set
示例2:返回当年的第一天。
gbase> SELECT TRUNC(current_date,'yyyy') FROM t;
+----------------------------+
| TRUNC(current_date,'yyyy') |
+----------------------------+
| 2013-01-01 |
+----------------------------+
1 row in set
示例3:返回当月的第一天。
gbase> SELECT TRUNC(current_date,'mm') FROM t;
+--------------------------+
| TRUNC(current_date,'mm') |
+--------------------------+
| 2013-10-01 |
+--------------------------+
1 row in set
示例4:返回当天的日期。
gbase> SELECT TRUNC(current_date,'dd') FROM t;
+--------------------------+
| TRUNC(current_date,'dd') |
+--------------------------+
| 2013-10-12 |
+--------------------------+
1 row in set
示例5:得到当天凌晨0 点0 分0 秒的日期。
gbase> SELECT TRUNC(current_date,'hh') FROM t;
+--------------------------+
| TRUNC(current_date,'hh') |
+--------------------------+
| 2013-10-12 00:00:00 |
+--------------------------+
1 row in set
示例6:得到当天凌晨0 点0 分0 秒的日期。
gbase> SELECT TRUNC(current_date,'mi') FROM t;
+--------------------------+

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 601
| TRUNC(current_date,'mi') |
+--------------------------+
| 2013-10-12 00:00:00 |
+--------------------------+
1 row in set
注意
Oracle 引擎的ORACLE_TRUNC 函数支持日期和数字类型
(同8a 的TRUNCATE 函数)
的截断,因此第一个参数要么为日期类型,如果是字符串,则被认为是数字类型,要
能够转换成数字。例如:
ORACLE_TRUNC(TO_DATE(‘2017-08-30’, ‘YYYY-MM-DD’), ‘year’)
ORACLE_TRUNC(1232.23454, 2)
Hive 引擎函数(马海燕)

HIVE_DECODE()
HIVE_DECODE (binary bin, string charset)
使用指定的字符集charset 将二进制值bin 解码成字符串,支持的字符集有:
'US-ASCII', 'ISO-8859-1', 'UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16',如果任意输入
参数为NULL 都将返回NULL。

HIVE_TRIM()
HIVE_TRIM (string A)
去掉字符串A 的左右空白符号。

HIVE_DATE_ADD(date,expr)
返回开始日期date 增加expr 天后的日期。

示例:
gbase> SELECT HIVE_DATE_ADD('2010-01-02',3) FROM test_hive.t;
+-------------------------------+
| HIVE_DATE_ADD('2010-01-02',3) |
+-------------------------------+
| 2010-01-05 |
+-------------------------------+

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 602
1 row in set (Elapsed: 00:00:00.30)

gbase> SELECT HIVE_DATE_ADD(sysdate(),-3) FROM test_hive.t;
+-----------------------------+
| HIVE_DATE_ADD(sysdate(),-3) |
+-----------------------------+
| 2017-11-20 |
+-----------------------------+
1 row in set (Elapsed: 00:00:00.46)

HIVE_DATE_SUB(date,expr)
返回开始日期date 减少expr 天后的日期。

示例:
gbase> SELECT HIVE_DATE_SUB (sysdate(),-3) FROM test_hive.t;
+-----------------------------+
| HIVE_DATE_SUB(sysdate(),3) |
+-----------------------------+
| 2017-11-20 |
+-----------------------------+
1 row in set (Elapsed: 00:00:00.46)

HIVE_ADD_MONTHS(date,number)
HIVE_ADD_MONTHS(date, number)函数是在一个日期上加上指定的月份数,
其中,
日期中的日是不变的。
如果开始日期是某月的最后一天,结果将会进行调整,返回值会对应新的一月的最
后一天。
如果结果月份的天数比开始月份的天数少,返回值也会向回调整以适应有效日期。


示例:
gbase> select hive_add_months('2017-11-20',3) from t;
+---------------------------------+
| hive_add_months('2017-11-20',3) |
+---------------------------------+
| 2018-02-20 |

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 603
+---------------------------------+
1 row in set (Elapsed: 00:00:00.40)
DDL 语法
GBase UP 用于创建数据库对象的DDL 语句。
HIVE 不支持的语法HIVE 引擎也不支持。
DATABASE