返回首页

gbase数据、南大通用产品文档:GBase8a跨引擎读写分离

更新日期:2024年09月11日

当一个数据模型同时大量读、写操作并发执行时,读写操作互相影响,会加剧对锁
的竞争,导致整体性能下降。通过在GBase UP 中引入引擎级别的读写分离机制,
可以极大地缓解并发读写对锁的竞争,从而提高并发性能。引擎级别读写分离的基
本原理是,GBase UP 作为统一的访问入口,对读写请求进行调度,事务性操作
(INSERT、UPDATE 和DELETE)在GBase 8t 上执行,SELECT 查询关键是分析

GBase UP 产品手册 2 产品描述

文档版本04(2021-04-21) 南大通用数据技术股份有限公司 23
型计算在GBase 8a 上执行,以充分利用GBase 8t 和GBase 8a 各自的优点。
代码示意:
-- 创建镜像表,镜像方向为GBase8t 到GBase 8a MPP
Create table t(...) engine=‘Mirror8t8a’;
-- 写操作用8t 引擎
Insert into t values(…);
-- 分析型查询用8a 引擎
Select avg(…) from t group by …;
查询操作指向到8a 的方式有两种:自动识别,根据语句中函数的类型,如OLAP
函数;手动识别,用户session 级变量和hint 级变量,影响到语句的执行引擎。

参数说明:设置区间值的显示格式。
该参数属于USERSET 类型参数,请参考表GUC 参数设置方式中对应设置方法进行设
置。
取值范围:枚举类型

sql_standard 表示产生与SQL 标准规定匹配的输出。

postgres表示产生与PostgreSQL 8.4版本相匹配的输出,
当DateStyle参数被设为ISO
时。

postgres_verbose 表示产生与PostgreSQL 8.4 版本相匹配的输出,当DateStyle 参数
被设为non_ISO 时。

iso_8601 表示产生与在ISO 8601 中定义的“格式与代号”相匹配的输出。

a 表示与numtodsinterval 函数相匹配的输出结果,详细请参考numtodsinterval。
须知:
IntervalStyle 参数也会影响不明确的间隔输入的说明。
默认值:postgres

O-T

octet_length(string)
描述:字符串中的字节数。
返回值类型:int
示例:
gbase=# SELECT octet_length('jose');
octet_length
--------------
4
(1 row)

overlay(string placing string FROM int [for int])
描述:替换子字符串。FROM int 表示从第一个string 的第几个字符开始替换,for int
表示替换第一个string 的字符数目。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
116
返回值类型:text
示例:
gbase=# SELECT overlay('hello' placing 'world' from 2 for 3 );
overlay
---------
hworldo
(1 row)

position(substring in string)
描述:指定子字符串的位置。字符串区分大小写。
返回值类型:int,字符串不存在时返回0。
示例:
gbase=# SELECT position('ing' in 'string');
position
----------
4
(1 row)

pg_client_encoding()
描述:当前客户端编码名称。
返回值类型:name
示例:
gbase=# SELECT pg_client_encoding();
pg_client_encoding
--------------------
UTF8
(1 row)

quote_ident(string text)
描述:返回适用于SQL 语句的标识符形式(使用适当的引号进行界定)
。只有在必要的
时候才会添加引号(字符串包含非标识符字符或者会转换大小写的字符)
。返回值中嵌入的
引号都写了两次。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
117
返回值类型:text
示例:
gbase=# SELECT quote_ident('hello world');
quote_ident
--------------
"hello world"
(1 row)

quote_literal(string text)
描述:返回适用于在SQL 语句里当作文本使用的形式(使用适当的引号进行界定)

返回值类型:text
示例:
gbase=# SELECT quote_literal('hello');
quote_literal
---------------
'hello'
(1 row)
如果出现如下写法,text 文本将进行转义。
gbase=# SELECT quote_literal(E'O\'hello');
quote_literal
---------------
'O''hello'
(1 row)
如果出现如下写法,反斜杠会写入两次。
gbase=# SELECT quote_literal('O\hello');
quote_literal
---------------
E'O\\hello'
(1 row)
如果参数为NULL,返回空。如果参数可能为null,通常使用函数quote_nullable 更适
用。
gbase=# SELECT quote_literal(NULL);
quote_literal

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
118
---------------
(1 row)

quote_literal(value anyelement)
描述:将给定的值强制转换为text,加上引号作为文本。
返回值类型:text
示例:
gbase=# SELECT quote_literal(42.5);
quote_literal
---------------
'42.5'
(1 row)
如果出现如下写法,定值将进行转义。
gbase=# SELECT quote_literal(E'O\'42.5');
quote_literal
---------------
'0''42.5'
(1 row)
如果出现如下写法,反斜杠会写入两次。
gbase=# SELECT quote_literal('O\42.5');
quote_literal
---------------
E'O\\42.5'
(1 row)

quote_nullable(string text)
描述:返回适用于在SQL 语句里当作字符串使用的形式(使用适当的引号进行界定)

返回值类型:text 示例:
gbase=# SELECT quote_nullable('hello');
quote_nullable
----------------
'hello'
(1 row)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
119
如果出现如下写法,text 文本将进行转义。
gbase=# SELECT quote_nullable(E'O\'hello');
quote_nullable
----------------
'O''hello'
(1 row)
如果出现如下写法,反斜杠会写入两次。
gbase=# SELECT quote_nullable('O\hello');
quote_nullable
----------------
E'O\\hello'
(1 row)
如果参数为NULL,返回NULL。
gbase=# SELECT quote_nullable(NULL);
quote_nullable
----------------
NULL
(1 row)

quote_nullable(value anyelement)
描述:将给定的参数值转化为text,加上引号作为文本。
返回值类型:text
示例:
gbase=# SELECT quote_nullable(42.5);
quote_nullable
----------------
'42.5'
(1 row)
如果出现如下写法,定值将进行转义。
gbase=# SELECT quote_nullable(E'O\'42.5');
quote_nullable
----------------
'O''42.5'
(1 row)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
120
如果出现如下写法,反斜杠会写入两次。
gbase=# SELECT quote_nullable('O\42.5');
quote_nullable
----------------
E'O\\42.5'
(1 row)
如果参数为NULL,返回NULL。
gbase=# SELECT quote_nullable(NULL);
quote_nullable
----------------
NULL
(1 row)

rawcat(raw,raw)
描述:字符串拼接函数。
返回值类型:raw
示例:
gbase=# SELECT rawcat('ab','cd');
rawcat
--------
ABCD
(1 row)

regexp_like(text,text,text)
描述:正则表达式的模式匹配函数。
返回值类型:bool
示例:
gbase=# SELECT regexp_like('str','[ac]');
regexp_like
-------------
f
(1 row)

replace(string varchar, search_string varchar, replacement_string varchar)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
121
描述:
把字符串string 中所有子字符串search_string 替换成子字符串replacement_string 。
返回值类型:varchar
示例:
gbase=# SELECT replace('jack and jue','j','bl');
replace
----------------
black and blue
(1 row)

rpad(string varchar, length int [, fill varchar])
描述:使用填充字符fill(缺省时为空白)
,把string 填充到length 长度。如果string 已
经比length 长则将其从尾部截断。length 参数在GBase 8c 中表示字符长度。一个汉字长度
计算为一个字符。
返回值类型:varchar
示例:
gbase=# SELECT rpad('hi',5,'xyza');
rpad
-------
hixyz
(1 row)
gbase=# SELECT rpad('hi',5,'abcdefg');
rpad
-------
hiabc
(1 row)

regexp_substr(source_char, pattern)
描述:正则表达式的抽取子串函数。SQL 语法兼容A 和B 的情况下,GUC 参数
behavior_compat_options 的值包含aformat_regexp_match 时,.不能匹配'\n' 字符;不包含
aformat_regexp_match 时,.能够匹配'\n'字符。
返回值类型:text
示例:

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
122
gbase=# SELECT regexp_substr('500 Hello World, Redwood Shores, CA', ',[^,]+,')
"REGEXPR_SUBSTR";
REGEXPR_SUBSTR
-------------------
, Redwood Shores,
(1 row)

regexp_replace(string, pattern, replacement [,flags ])
描述:替换匹配POSIX 正则表达式的子字符串。如果没有匹配pattern,那么返回不加
修改的string 串。
如果有匹配,
则返回的string 串里面的匹配子串将被replacement 串替换掉。
replacement 串可以包含\n,其中\n 是1 到9,表明string 串里匹配模式里第n 个圆括号
子表达式的子串应该被插入,并且它可以包含\&表示应该插入匹配整个模式的子串。
可选的flags 参数包含零个或多个改变函数行为的单字母标记。
i 表示进行大小写无关的
匹配,
g 表示替换每一个匹配的子字符串而不仅仅是第一个。
m 表示按照多行模式匹配。
SQL
语法兼容A 和B 的情况下,n 选项在GUC 参数behavior_compat_options 的值包含
aformat_regexp_match 时,表示. 能够匹配'\n' 字符,flags 中没有指定n 时,默认不能匹配
'\n'字符;值不包含aformat_regexp_match 时,. 默认能匹配'\n'字符。n 选项的含义与m 选项
一致。
返回值类型:varchar
示例:
gbase=# SELECT regexp_replace('Thomas', '.[mN]a.', 'M');
regexp_replace
----------------
ThM
(1 row)
gbase=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 'g') AS RESULT;
result
-------------
fooXarYXazY
(1 row)

string [NOT] LIKE pattern [ESCAPE escape-character]
描述:模式匹配函数。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
123
如果pattern 不包含百分号或者下划线,该模式只代表它本身,这时候LIKE 的行为就
像等号操作符。在pattern 里的下划线(_)匹配任何单个字符;而一个百分号(%)匹配零
或多个任何字符。
要匹配下划线或者百分号本身,在pattern 里相应的字符必须前导逃逸字符。缺省的逃
逸字符是反斜杠,但是用户可以用ESCAPE 子句指定一个。要匹配逃逸字符本身,写两个
逃逸字符。
返回值类型:Boolean
示例:
gbase=# SELECT 'AA_BBCC' LIKE '%A@_B%' ESCAPE '@' AS RESULT;
result
--------
t
(1 row)
gbase=# SELECT 'AA_BBCC' LIKE '%A@_B%' AS RESULT;
result
--------
f
(1 row)
gbase=# SELECT 'AA@_BBCC' LIKE '%A@_B%' AS RESULT;
result
--------
t
(1 row)

repexp_replace(string text, pattern text [, replacement text [, position int [, occurrence int [,
flags text]]]])
描述:替换匹配POSIX 正则表达式的子字符串。如果没有匹配pattern,那么返回不加
修改的string 串。
如果有匹配,
则返回的string 串里面的匹配子串将被replacement 串替换掉。
参数说明:

-- string:用于匹配的源字符串

-- pattern:用于匹配的正则表达式模式串

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
124

-- replacement:可选参数,用于替换匹配子串的字符串。如果不给定参数值或者
为null, 表示用空串替换。

-- position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。

-- occurrence:可选参数,表示替换第occurrence 个匹配的子串。默认值为0,表
示替换所有匹配到的子串。

-- flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m
表示按照多行模式匹配。SQL 语法兼容A 和B 的情况下,n 选项在GUC 参数
behavior_compat_options 值包含aformat_regexp_match 时,
表示. 能够匹配'\n' 字
符,
flags 中没有指定n 时,
默认.不能匹配'\n' 字符;
值不包含aformat_regexp_match
时,. 默认能匹配'\n'字符。n 选项的含义与m 选项一致。
返回值类型:text
示例:
gbase=# SELECT regexp_replace('Thomas','.[mN]a.','M');
regexp_replace
----------------
ThM
(1 row)
gbase=# SELECT regexp_replace('footbarbaz','b(..)',E'X\\1Y','g') AS RESULT;
result
--------------
footXarYXazY
(1 row)

regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]])
描述:正则表达式的抽取子串函数。与substr 功能相似,正则表达式出现多个并列的括
号时,也全部处理。
参数说明:

-- string:用于匹配的源字符串。

-- pattern:用于匹配的正则表达式模式串。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
125

-- position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。

-- occurrence:可选参数,表示抽取第几个满足匹配的子串,为,默认值为1。

-- flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m
表示按照多行模式匹配。SQL 语法兼容A 和B 的情况下,n 选项在GUC 参数
behavior_compat_options 值包含aformat_regexp_match 时,
表示. 能够匹配'\n' 字
符,
flags 中没有指定n 时,
默认.不能匹配'\n' 字符;
值不包含aformat_regexp_match
时,. 默认能匹配'\n'字符。n 选项的含义与m 选项一致。
返回值类型:text
示例:
gbase=# SELECT regexp_substr('str','[ac]');
regexp_substr
---------------
(1 row)
gbase=# SELECT regexp_substr('foobarbaz', 'b(..)', 3, 2) AS RESULT;
result
--------
baz
(1 row)

regexp_count(string text, pattern text [, position int [, flags text]])
描述:获取满足匹配的子串个数。
参数说明:

-- string:用于匹配的源字符串。

-- pattern:用于匹配的正则表达式模式串。

-- position:表示从源字符串的第几个字符开始匹配,为可选参数,默认值为
1。

-- flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m
表示按照多行模式匹配。SQL 语法兼容A 和B 的情况下,n 选项在GUC 参数
behavior_compat_options 值包含aformat_regexp_match 时,
表示. 能够匹配'\n' 字

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
126
符,
flags 中没有指定n 时,
默认.不能匹配'\n' 字符;
值不包含aformat_regexp_match
时,. 默认能匹配'\n'字符。n 选项的含义与m 选项一致。
返回值类型:int
示例:
gbase=# SELECT regexp_count('foobarbaz','b(..)', 5) AS RESULT;
result
--------
1
(1 row)

regexp_instr(string text, pattern text [, position int [, occurrence int [, return_opt int [, flags
text]]]])
描述:获取满足匹配条件的子串位置(从1 开始)
。如果没有匹配的子串,则返回0。
参数说明:

-- string:用于匹配的源字符串。

-- pattern:用于匹配的正则表达式模式串。

-- position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。

-- occurrence:可选参数,表示获取第occurrence 个匹配子串的位置,默认值为1。

-- return_opt:可选参数,用于控制返回匹配子串的首字符位置还是尾字符位置。
取值为0 时,返回匹配子串的第一个字符的位置(从1 开始计算)
,取值为大于0
的值时,返回匹配子串的尾字符的下一个字符的位置。默认值为0。

-- flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。其中:m
表示按照多行模式匹配。SQL 语法兼容A 和B 的情况下,n 选项在GUC 参数
behavior_compat_options 值包含aformat_regexp_match 时,
表示. 能够匹配'\n' 字
符,
flags 中没有指定n 时,
默认.不能匹配'\n' 字符;
值不包含aformat_regexp_match
时,. 默认能匹配'\n'字符。n 选项的含义与m 选项一致。
返回值类型:int

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
127
示例:
gbase=# SELECT regexp_instr('foobarbaz','b(..)', 1, 1, 0) AS RESULT;
result
--------
4
(1 row)
gbase=# SELECT regexp_instr('foobarbaz','b(..)', 1, 2, 0) AS RESULT;
result
--------
7
(1 row)

regexp_matches(string text, pattern text [, flags text])
描述:
返回string 中所有匹配POSIX 正则表达式的子字符串。
如果pattern 不匹配,该
函数不返回行。
如果模式不包含圆括号子表达式,
则每一个被返回的行都是一个单一元素的
文本数组,其中包括匹配整个模式的子串。如果模式包含圆括号子表达式,该函数返回一个
文本数组,它的第n 个元素是匹配模式的第n 个圆括号子表达式的子串。
flags 参数为可选参数,包含零个或多个改变函数行为的单字母标记。i 表示进行大小写
无关的匹配,g 表示替换每一个匹配的子字符串而不仅仅是第一个。
如果提供了最后一个参数,但参数值是空字符串('')
,且数据库SQL 兼容模式设置为
A 的情况下,会导致返回结果为空集。这是因为A 兼容模式将''作为NULL 处理,避免此类
行为的方式有如下几种:
-- 将数据库SQL 兼容模式改为C;
-- 不提供最后一个参数,或最后一个参数不为空字符串。
返回值类型:setof text[]
示例:
gbase=# SELECT regexp_matches('foobarbequebaz', '(bar)(beque)');
regexp_matches
----------------

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
128
{bar,beque}
(1 row)
gbase=# SELECT regexp_matches('foobarbequebaz', 'barbeque');
regexp_matches
----------------
{barbeque}
(1 row)
gbase=# SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)',
'g');
regexp_matches
----------------
{bar,beque}
{bazil,barf}
(2 rows)

regexp_split_to_array(string text, pattern text [, flags text ])
描述:用POSIX 正则表达式作为分隔符,分隔string。和regexp_split_to_table 相同,
不过regexp_split_to_array 会把它的结果以一个text 数组的形式返回。
返回值类型:text[]
示例:
gbase=# SELECT regexp_split_to_array('hello world', E'\\s+');
regexp_split_to_array
-----------------------
{hello,world}
(1 row)

regexp_split_to_table(string text, pattern text [,
flags text])
描述:
用POSIX 正则表达式作为分隔符,
分隔string。
如果没有与pattern 的匹配,

函数返回string。如果有至少有一个匹配,对每一个匹配它都返回从上一个匹配的末尾(或
者串的开头)到这次匹配开头之间的文本。当没有更多匹配时,
它返回从上一次匹配的末尾
到串末尾之间的文本。
flags 参数包含零个或多个改变函数行为的单字母标记。i 表示进行大小写无关的匹配。
返回值类型:setof text

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
129
示例:
gbase=# SELECT regexp_split_to_table('hello world', E'\\s+');
regexp_split_to_table
-----------------------
hello
world
(2 rows)

repeat(string text, number int )
描述:将string 重复number 次。
返回值类型:text。
示例:
gbase=# SELECT repeat('Pg', 4);
repeat
----------
PgPgPgPg
(1 row)
由于数据库内存分配机制限制单次内存分配不可超过1GB,因此number 最大值不应超
过(1G-x)/lengthb(string) - 1。
x 为头信息长度,
通常大于4 字节,
其具体值在不同的场景下存
在差异。

replace(string text, from text, to text)
描述:把字符串string 里出现地所有子字符串from 的内容替换成子字符串to 的内容。
返回值类型:text
示例:
gbase=# SELECT replace('abcdefabcdef', 'cd', 'XXX');
replace
----------------
abXXXefabXXXef
(1 row)

replace(string, substring)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
130
描述:删除字符串string 里出现的所有子字符串substring 的内容。
string 类型:text substring 类型:
text 返回值类型:text
示例:
gbase=# SELECT replace('abcdefabcdef', 'cd');
replace
----------------
abefabef
(1 row)

reverse(str)
描述:返回颠倒的字符串。
返回值类型:text
示例:
gbase=# SELECT reverse('abcde');
reverse
---------
edcba
(1 row)

right(str text, n int)
描述:返回字符串中的后n 个字符。当n 是负值时,返回除前|n|个字符以外所有字符。
返回值类型:text
示例:
gbase=# SELECT right('abcde', 2);
right
-------
de
(1 row)
gbase=# SELECT right('abcde', -2);
right
-------

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
131
cde
(1 row)

rpad(string text, length int [, fill text])
描述:使用填充字符fill(缺省时为空白)
,把string 填充到length 长度。如果string 已
经比length 长则将其从尾部截断。
返回值类型:text
示例:
gbase=# SELECT rpad('hi', 5, 'xy');
rpad
-------
hixyx
(1 row)

rtrim(string text [, characters text])
描述:从字符串string 的结尾删除只包含characters 中字符(缺省是个空白)的最长的
字符串。
返回值类型:text
示例:
gbase=# SELECT rtrim('trimxxxx', 'x');
rtrim
-------
trim
(1 row)

rtrim(string [, characters])
描述:从字符串string 的结尾删除只包含characters 中字符(缺省是个空白)的最长的
字符串。
返回值类型:varchar
示例:
gbase=# SELECT rtrim('TRIMxxxx','x');

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
132
rtrim
-------
TRIM
(1 row)

REGEXP_LIKE(source_string, pattern [, match_parameter])
描述:正则表达式的模式匹配函数。
source_string 为源字符串,pattern 为正则表达式匹配模式。match_parameter 为匹配选
项,可取值为:

-- 'i':大小写不敏感。

-- 'c':大小写敏感。

-- 'n':允许正则表达式元字符“.”匹配换行符。

-- 'm':将source_string 视为多行。

-- 若忽略match_parameter 选项,
默认为大小写敏感,
“.”
不匹配换行符,
source_string
视为单行。
返回值类型:Boolean
示例:
gbase=# SELECT regexp_like('ABC', '[A-Z]');
regexp_like
-------------
t
(1 row)
gbase=# SELECT regexp_like('ABC', '[D-Z]');
regexp_like
-------------
f
(1 row)
gbase=# SELECT regexp_like('ABC', '[a-z]','i');
regexp_like
-------------
t
(1 row)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
133

substring_inner(string [from int] [for int])
描述:截取子字符串,from int 表示从第几个字符开始截取,for int 表示截取几个字节。
返回值类型:text
示例:
gbase=# select substring_inner('adcde', 2,3);
substring_inner
-----------------
dcd
(1 row)

substring(string [from int] [for int])
描述:截取子字符串,from int 表示从第几个字符开始截取,for int 表示截取几个字节。
返回值类型:text
示例:
gbase=# SELECT substring('Thomas' from 2 for 3);
substring
-----------
hom
(1 row)

substring(string from pattern)
描述:截取匹配POSIX 正则表达式的子字符串。如果没有匹配它返回空值,否则返回
文本中匹配模式的那部分。
返回值类型:text
示例:
gbase=# SELECT substring('Thomas' from '...$');
substring
-----------
mas
(1 row)
gbase=# SELECT substring('foobar' from 'o(.)b');
result

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
134
--------
o
(1 row)
gbase=# SELECT substring('foobar' from '(o(.)b)');
result
--------
oob
(1 row)
如果POSIX 正则表达式模式包含任何圆括号,那么将返回匹配第一对子表达式(对应
第一个左圆括号的)的文本。如果需要使用圆括号而不产生以上结果,可以在整个表达式外
边放上一对圆括号。

substring(string from pattern for escape)
描述:截取匹配SQL 正则表达式的子字符串。声明的模式必须匹配整个数据串,否则
函数失败并返回空值。
为了标识在成功的时候应该返回的模式部分,
模式必须包含逃逸字符
的两次出现,并且后面要跟上双引号(")
。匹配这两个标记之间的模式的文本将被返回。
返回值类型:text
示例:
gbase=# SELECT substring('Thomas' from '%#"o_a#"_' for '#');
substring
-----------
oma
(1 row)

substrb(text,int,int)
描述:提取子字符串,第一个int 表示提取的起始位置,第二个表示提取几位字符。
返回值类型:text
示例:
gbase=# SELECT substrb('string',2,3);
substrb
---------

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
135
tri
(1 row)

substrb(text,int)
描述:提取子字符串,int 表示提取的起始位置。
返回值类型:text
示例:
gbase=# SELECT substrb('string',2);
substrb
---------
tring
(1 row)

substr(bytea,from,count)
描述:从参数bytea 中抽取子字符串。from 表示抽取的起始位置,count 表示抽取的子
字符串长度。
返回值类型:text
示例:
gbase=# SELECT substr('string',2,3);
substr
--------
tri
(1 row)

string || string
描述:连接字符串。
返回值类型:text
示例:
gbase=# SELECT 'MPP'||'DB' AS RESULT;
result
--------
MPPDB

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
136
(1 row)

string || non-string 或non-string || string
描述:连接字符串和非字符串。
返回值类型:text
示例:
gbase=# SELECT 'Value: '||42 AS RESULT;
result
-----------
Value: 42
(1 row)

split_part(string text, delimiter text, field int)
描述:
根据delimiter 分隔string 返回生成的第field 个子字符串
(从出现第一个delimiter
的text 为基础)

返回值类型:text
示例:
gbase=# SELECT split_part('abc~@~def~@~ghi', '~@~', 2);
split_part
------------
def
(1 row)

strpos(string, substring)
描述:指定的子字符串的位置。和position(substring in string)一样,不过参数顺序相反。
返回值类型:int
示例:
gbase=# SELECT strpos('source', 'rc');
strpos
--------
4
(1 row)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
137

substr(string,from)
描述:
从参数string 中抽取子字符串。
from 表示抽取的起始位置。
from 为0 时,
按1 处理。
from
为正数时,抽取从from 到末尾的所有字符。from 为负数时,抽取字符串的后n 个字符,n
为from 的绝对值。
返回值类型:varchar
示例:
from 为正数时:
gbase=# SELECT substr('ABCDEF',2);
substr
--------
BCDEF
(1 row)
from 为负数时:
gbase=# SELECT substr('ABCDEF',-2);
substr
--------
EF
(1 row)

substr(string,from,count)
描述:
从参数string 中抽取子字符串。from 表示抽取的起始位置。count 表示抽取的子字符串
长度。from 为0 时,按1 处理。from 为正数时,抽取从from 开始的count 个字符。from 为
负数时,抽取从倒数第n 个开始的count 个字符,n 为from 的绝对值。count 小于1 时,返
回null。
返回值类型:varchar
示例:

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
138
from 为正数时:
gbase=# SELECT substr('ABCDEF',2,2);
substr
--------
BC
(1 row)
from 为负数时:
gbase=# SELECT substr('ABCDEF',-3,2);
substr
--------
DE
(1 row)

substrb(string,from)
描述:该函数和SUBSTR(string,from)函数功能一致,但是计算单位为字节。
返回值类型:bytea
示例:
gbase=# SELECT substrb('ABCDEF',-2);
substrb
---------
EF
(1 row)

substrb(string,from,count)
描述:该函数和SUBSTR(string,from,count)函数功能一致,但是计算单位为字节。
返回值类型:bytea 示例:
gbase=# SELECT substrb('ABCDEF',2,2);
substrb
---------
BC
(1 row)

similar_escape(pat text, esc text)
描述:将一个SQL:2008 风格的正则表达式转换为POSIX 风格。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
139
返回值类型:text
示例:
gbase=# SELECT similar_escape('\s+ab','2');
similar_escape
----------------
^(?:\\s+ab)$
(1 row)

svals(hstore)
描述:获取hstore 中的值。
返回值类型:SETOF text
示例:
gbase=# SELECT svals('"aa"=>"bb"');
svals
-------
bb
(1 row)

tconvert(key text, value text)
描述:将字符串转换为hstore 格式。
返回值类型:hstore
示例:
gbase=# SELECT tconvert('aa', 'bb');
tconvert
------------
"aa"=>"bb"
(1 row)

to_hex(number int or bigint)
描述:把number 转换成十六进制表现形式
。返回值类型:text
示例:

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
140
gbase=# SELECT to_hex(2147483647);
to_hex
----------
7fffffff
(1 row)

translate(string text, from text, to text)
描述:把在string 中包含的任何匹配from 中字符的字符转化为对应的在to 中的字符。
如果from 比to 长,删掉在from 中出现的额外的字符。
返回值类型:text
示例:
gbase=# SELECT translate('12345', '143', 'ax');
translate
-----------
a2x5
(1 row)

trim([leading |trailing |both] [characters] from string)
描述:从字符串string 的开头、结尾或两边删除只包含characters 中字符(缺省是空白)
的最长的字符串。
返回值类型:varchar
示例:
gbase=# SELECT trim(BOTH 'x' FROM 'xTomxx');
btrim
-------
Tom
(1 row)
gbase=# SELECT trim(LEADING 'x' FROM 'xTomxx');
ltrim
-------
Tomxx
(1 row)
gbase=# SELECT trim(TRAILING 'x' FROM 'xTomxx');
rtrim
-------

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
141
xTom
(1 row)