云服务器内容精选

  • 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)