返回首页

gbase数据、南大通用产品文档:GBase8aGBase 8a ODBC 连接池简介

更新日期:2024年09月11日

GBase
8a
ODBC 连接池是针对GBase
8a 开发的ODBC 数据库连接池。它主要
有用下几大功能:

缓存连接到GBase 8a 各节点的数据库连接。

负载功能,根据负载均衡策略将用户申请的连接分摊到GBase 8a
的各节点上。

周期性的维护GBase 8a ODBC 连接池中各连接的有效性,清理连
接池中无效的连接。

周期性的维护连接池中的空闲连接数,保证连接池中的空闲连接
数满足用户的设定最大/最小空闲连接数。

清理过期的连接。

本节描述如何查询对集合类型定义的列。集合类型是一种复杂 数据类型。其中每个集合值
包含具有相同数据类型的一组元素。有关集合数据类型的详细描述,请参阅《GBase 8s 数
据库设计和实现指南》

有关如何访问集合包含的个别元素的信息,
请参阅处理 SELECT 语
句中的集合。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 78 -
下图显示 manager 表,
在本节的示例中使用了该表。
manager 表同时包含简单集合类型和嵌
套集合类型。简单集合是一种集合类型。它不包含本身就是集合类型的任何字
段。 manager 表的 direct_reports 列就是一个简单集合。嵌套集合是包含另一集合类型的集
合类型。manager 表的projects 列就是一个嵌套集合。
图: manager 表
CREATE TABLE manager
(
mgr_name VARCHAR(30),
department VARCHAR(12),
direct_reports SET(VARCHAR(30) NOT NULL),
projects LIST(ROW(pro_name VARCHAR(15),
pro_members SET(VARCHAR(20) NOT NULL)
) NOT NULL)
)
对于表中的每一行,对作为集合类型的列的查询返回特定集合包含的所有元素。例如:以
下查询显示对 manager 表的每一行返回 department 列中的数据和 direct_reports 列中的所有
元素的查询。
图: 查询
SELECT department, direct_reports FROM manager
图: 查询结果
department marketing
direct_reports SET {Smith, Waters, Adams, Davis, Kurasawa}

department engineering
ddirect_reports SET {Joshi, Davis, Smith, Waters, Fosmire, Evans,
Jones}

department publications
direct_reports SET {Walker, Fremont, Porat, Johnson}

department accounting
direct_reports SET {Baker, Freeman, Jacobs}

对集合类型查询的输出总是包括类型构造函数,它指定集合是 SET 、MULTISET 或
LIST 。例如:在此结果中,SET 构造函数位于每个集合的元素前面。花括号({})划分
集合的元素;逗号隔开集合的个别元素。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 79 -

语法格式
LOCATE(substr,str)
LOCATE(substr,str,pos)
函数说明

第一种语法返回子串substr 在字符串str 中第一次出现的位置,
LOCATE(substr,str)与INSTR(str,substr)相似,只是参数的位置被颠倒;

第二种语法返回子串substr 在字符串str 中的第pos 位置后第一次出现的位
置。
说明

如果substr 不在str 中,则返回0;

substr 在str 中的位置,以1 开始计数;

如果pos 值大于str 的长度,则返回为0;

如果pos 为NULL,则返回NULL。
示例
示例1:返回“bar”在“foobarbar”中第一次出现的位置。
gbase> SELECT LOCATE('bar', 'foobarbar') FROM dual;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
698
+----------------------------+
| LOCATE('bar', 'foobarbar') |
+----------------------------+
|
4 |
+----------------------------+
1 row in set
示例2:“xbar”不在“foobar”中,返回值为0。
gbase> SELECT LOCATE('xbar', 'foobar') FROM dual;
+--------------------------+
| LOCATE('xbar', 'foobar') |
+--------------------------+
|
0 |
+--------------------------+
1 row in set
示例3:返回“bar”在“foobarbar”中的第5 位后,第一次出现的位置。
gbase> SELECT LOCATE('bar', 'foobarbar',5) FROM dual;
+------------------------------+
| LOCATE('bar', 'foobarbar',5) |
+------------------------------+
|
7 |
+------------------------------+
1 row in set
示例4:如有任一参数是一个二进制字符串,它是字母大小写敏感的。
gbase> SELECT LOCATE(BINARY'bAr', 'foobarbar',5) FROM dual;
+------------------------------------+
| LOCATE(BINARY'bAr', 'foobarbar',5) |
+------------------------------------+
|
0 |
+------------------------------------+
1 row in set