-
find_in_set(str, strlist) 描述:查询字段strlist中是否包含str的结果,如有则返回str在strlist中的位置。输入为字符串str与strlist,其中str为用户需要查询的字符串,strlist是以“,”为分隔符,不同字符串通过分隔符组合在一起的字符串集合,strlist本身也为字符串。如果字符串str不在strlist或者strlist为空字符串,则返回值为0。 参数: 表5 参数说明 参数说明 类型 描述 str text 目标字符串。 strlist text 字符串形式的集合。 返回值类型:int。 示例: 1
2
3
4
5 gaussdb=# SELECT find_in_set('ee','a,ee,c');
find_in_set
-------------
2
(1 row)
-
strcmp(expr1,expr2) 描述:根据当前字符序比较两个输入字符串,字符串相等返回0,第一个字符串小于第二个字符串返回-1,否则返回1。 参数说明: 参数说明 类型 描述 expr1/expr2 字符类型:CHAR、VARCHAR、NVARCHAR2、TEXT 二进制类型:BYTEA 数值类型:TINYINT [UNSIGNED]、SMALLINT [UNSIGNED]、INTEGER [UNSIGNED]、BIGINT [UNSIGNED]、FLOAT4、FLOAT8、NUMERIC 日期时间类型:DATE、TIME WITHOUT TIME ZONE、DATETIME、TIMESTAMPTZ 表示参与比较的字符串。 返回值类型:INTEGER。 示例: 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 -- 切换B模式数据库
gaussdb=# CREATE DATABASE gaussdb_m dbcompatibility='B';
gaussdb=# \c gaussdb_m
-- 设置兼容版本控制参数,开启常量字符串指定字符序功能
gaussdb_m=# SET b_format_version='5.7';
gaussdb_m=# SET b_format_dev_version='s2';
gaussdb_m=# SELECT strcmp('abc', 'ABC');
strcmp
--------
0
(1 row)
gaussdb_m=# SELECT strcmp('abc ', 'abc');
strcmp
--------
0
(1 row)
gaussdb_m=# SELECT strcmp('1', 1);
strcmp
--------
0
(1 row)
gaussdb_m=# SELECT strcmp(123, 2);
strcmp
--------
-1
(1 row)
strcmp函数仅在参数sql_compatibility=B'时生效; b_format_version='5.7'和b_format_dev_version='s1'版本开始,SQL_MODE参数"pad_char_to_full_length"控制对CHAR类型尾部填充空格,会影响strcmp的比较结果,具体请参见表1; b_format_version='5.7'和b_format_dev_version='s1'版本开始,字符类型、二进制类型、数值类型、日期时间类型行为兼容M,会影响strcmp的比较结果,具体请参见数据类型。对于数值类型中的浮点类型,由于连接参数设置不同,精度可能与M有差异,不建议使用该场景,或使用NUMERIC类型代替,具体请参见连接参数; b_format_version='5.7'和b_format_dev_version='s2'版本开始,支持常量字符串获取字符序,字符序会影响strcmp的比较结果,具体请参见SET章节SET NAMES语法,字符类型不同字符序间的合并规则请参见字符集和字符序合并规则。
-
find_in_set(text, set) 描述:查找给定成员在集合中的位置,从1开始计数。如果没有找到,返回0。 返回值类型:int2。 示例: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 gaussdb=# CREATE DATABASE gaussdb_b WITH DBCOMPATIBILITY 'B';
gaussdb=# \c gaussdb_b
gaussdb_b=# CREATE TABLE employee (
name text,
site SET('beijing','shanghai','nanjing','wuhan')
);
gaussdb_b=# INSERT INTO employee values('zhangsan', 'beijing,nanjing');
gaussdb_b=# INSERT INTO employee values('zhangsan2', 'beijing,wuhan');
gaussdb_b=# SELECT site, find_in_set('wuhan', site) from employee;
site | find_in_set
-----------------+-------------
beijing,nanjing | 0
beijing,wuhan | 2
(2 rows)
gaussdb_b=# DROP TABLE employee;
gaussdb_b=# \c postgres
gaussdb=# DROP DATABASE gaussdb_b;
-
format(formatstr text [, str"any" [, ...] ]) 描述:格式化字符串。 返回值类型:text。 示例: 1
2
3
4
5 gaussdb=# SELECT format('Hello %s, %1$s', 'World');
format
--------------------
Hello World, World
(1 row)
-
sha(string) / sha1(string) 描述:将string使用SHA1加密,并以16进制数作为返回值,sha和sha1函数功能相同。 SHA1加密算法安全性低,存在安全风险,不建议使用。 该函数仅在
GaussDB 兼容MY类型时(即sql_compatibility = 'B')有效,其他类型不支持该函数。 返回值类型:text。 示例: 1
2
3
4
5
6
7
8
9
10 gaussdb=# SELECT sha('ABC');
sha
------------------------------------------
3c01bdbb26f358bab27f267924aa2c9a03fcfdb8
(1 row)
gaussdb=# SELECT sha1('ABC');
sha1
------------------------------------------
3c01bdbb26f358bab27f267924aa2c9a03fcfdb8
(1 row)
-
convert_to(string text, dest_encoding name) 描述:将字符串转换为dest_encoding的编码格式。 返回值类型:bytea。 示例: 1
2
3
4
5 gaussdb=# SELECT convert_to('some text', 'UTF8');
convert_to
----------------------
\x736f6d652074657874
(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。 示例: 1
2
3
4
5 gaussdb=# SELECT regexp_like('ABC', '[A-Z]');
regexp_like
-------------
t
(1 row)
1
2
3
4
5 gaussdb=# SELECT regexp_like('ABC', '[D-Z]');
regexp_like
-------------
f
(1 row)
1
2
3
4
5 gaussdb=# SELECT regexp_like('ABC', '[a-z]','i');
regexp_like
-------------
t
(1 row)
-
convert(expr, USING transcoding_name) 描述:接收一个参数,可以是字符也可以是数字,将其转换为一个字符编码为transcoding_name类型的字符串并返回。 返回值类型:text。 示例: 1
2
3
4
5 gaussdb=# SELECT convert('asdas' using 'gbk');
convert
---------
asdas
(1 row)
此函数仅在B模式数据库中生效。
-
md5(string) 描述:将string使用MD5加密,并以16进制数作为返回值。 MD5加密算法安全性低,存在安全风险,不建议使用。 返回值类型:text。 示例: 1
2
3
4
5 gaussdb=# SELECT md5('ABC');
md5
----------------------------------
902fbdd2b1df0c4f70b4a5d23525e932
(1 row)
-
sha2(string,hash_length) 描述:将string使用SHA2加密,并以16进制数作为返回值。 hash_length:对应相应的SHA2算法,可选值为 0(SHA-256)、224(SHA-224)、256(SHA-256)、384(SHA-384)、512(SHA-512),其他值将返回NULL。 SHA224加密算法安全性低,存在安全风险,不建议使用。 SHA2函数会在日志中记录哈希的明文,因此不建议用户用该函数加密密钥等敏感信息。 该函数仅在GaussDB兼容MY类型时(即sql_compatibility = 'B')有效,其他类型不支持该函数。 返回值类型:text。 示例: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 gaussdb=# SELECT sha2('ABC',224);
sha2
----------------------------------------------------------
107c5072b799c4771f328304cfe1ebb375eb6ea7f35a3aa753836fad
(1 row)
gaussdb=# SELECT sha2('ABC',256);
sha2
------------------------------------------------------------------
b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78
(1 row)
gaussdb=# SELECT sha2('ABC',0);
sha2
------------------------------------------------------------------
b5d4045c3f466fa91fe
2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78
(1 row)
-
convert(string bytea, src_encoding name, dest_encoding name) 描述:以dest_encoding指定的目标编码方式转换字符串string。src_encoding指定源编码方式,在该编码下,string必须是合法的。 返回值类型:bytea。 示例: 1
2
3
4
5 gaussdb=# SELECT convert('text_in_utf8', 'UTF8', 'GBK');
convert
----------------------------
\x746578745f696e5f75746638
(1 row)
如果源编码格式到目标编码格式的转换规则不存在,则字符串不进行任何转换直接返回,如GBK和LATIN1之间的转换规则是不存在的,具体转换规则可以通过查看系统表pg_conversion获得。server_encoding为初始化数据库时指定。 示例: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 gaussdb=# SHOW server_encoding;
server_encoding
-----------------
LATIN1
(1 row)
gaussdb=# SELECT convert_from('some text', 'GBK');
convert_from
--------------
some text
(1 row)
db_latin1=# SELECT convert_to('some text', 'GBK');
convert_to
----------------------
\x736f6d652074657874
(1 row)
db_latin1=# SELECT convert('some text', 'GBK', 'LATIN1');
convert
----------------------
\x736f6d652074657874
(1 row)
-
concat_ws(sep text, str"any" [, str"any" [, ...] ]) 描述:以第一个参数为分隔符,连接第二个以后的所有参数。NULL参数被忽略。 如果第一个参数值是NULL,会导致返回结果为NULL。 如果第一个参数值是空字符串(''),且数据库SQL兼容模式设置为A的情况下,会导致返回结果为NULL。这是因为A兼容模式将''作为NULL处理,避免此类行为,可以将数据库SQL兼容模式改为B、C或者PG。 返回值类型:text。 示例: 1
2
3
4
5 gaussdb=# SELECT concat_ws(',', 'ABCDE', 2, NULL, 22);
concat_ws
------------
ABCDE,2,22
(1 row)
-
string [NOT] LIKE pattern [ESCAPE escape-character] 描述:模式匹配函数。 如果pattern不包含百分号或者下划线,该模式只代表它本身,这时候LIKE的行为就像等号操作符。在pattern里的下划线(_)匹配任何单个字符;而一个百分号(%)匹配零或多个任何字符。 要匹配下划线或者百分号本身,在pattern里相应的字符必须前导逃逸字符。缺省的逃逸字符是反斜杠,但是用户可以用ESCAPE子句指定一个。要匹配逃逸字符本身,写两个逃逸字符。 返回值类型:Boolean。 示例: 1
2
3
4
5 gaussdb=# SELECT 'AA_BBCC' LIKE '%A@_B%' ESCAPE '@' AS RESULT;
result
--------
t
(1 row)
1
2
3
4
5 gaussdb=# SELECT 'AA_BBCC' LIKE '%A@_B%' AS RESULT;
result
--------
fnumeric
(1 row)
1
2
3
4
5 gaussdb=# SELECT 'AA@_BBCC' LIKE '%A@_B%' AS RESULT;
result
--------
t
(1 row)
-
regexp_replace(string, pattern, replacement [,flags ]) 描述:替换匹配POSIX正则表达式的子字符串。未匹配pattern时,返回原始的string串。当存在匹配时,返回的string串中的匹配子串将被replacement串替换掉。replacement串可以包含\n,其中\n是1到9,表明string串里匹配模式里第n个圆括号子表达式的子串应该被插入,并且它可以包含\&表示应该插入匹配整个模式的子串。 参数: string:用于匹配的源字符串。 pattern:用于匹配的正则表达式模式串。 flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。g表示将所有匹配的子字符串替换为指定内容,而非仅替换第一个匹配项。其他flags支持的选项值及含义描述如表3所示。 返回值类型:text 示例: 1
2
3
4
5
6
7
8
9
10 gaussdb=# SELECT regexp_replace('Thomas', '.[mN]a.', 'M');
regexp_replace
----------------
ThM
(1 row)
gaussdb=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 'g') AS RESULT;
result
-------------
fooXarYXazY
(1 row)
-
convert_from(string bytea, src_encoding name) 描述:以数据库的编码方式转换字符串string。 src_encoding指定源编码方式,在该编码下,string必须是合法的。 返回值类型:text。 示例: 1
2
3
4
5 gaussdb=# SELECT convert_from('text_in_utf8', 'UTF8');
convert_from
--------------
text_in_utf8
(1 row)