华为云用户手册

  • chr(integer) 描述:如果为UTF-8字符集,将输入作为unicode编码,返回一个UTF-8的字符,其他字符集给出ASCII码的字符。 返回值类型:text。 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下:参数integer入参若为小数则不会被四舍五入,而是被截断。 如需设置、修改字符集与字符序,请参考字符集与字符序章节。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 gaussdb=# SELECT chr(65); chr ----- A (1 row) -- UTF-8字符集的情况下 gaussdb=# select chr(19968); chr ----- 一 (1 row)
  • replace(string varchar, search_string varchar, replacement_string varchar) 描述:把字符串string中所有子字符串search_string替换成子字符串replacement_string。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT replace('jack and jue','j','bl'); replace ---------------- black and blue (1 row)
  • concat(str1,str2) 描述:将字符串str1和str2连接并返回。注意,concat会调用data type的输出函数,返回值不确定,导致优化器在生成计划的时候不能提前计算结果。如果对性能有要求,建议用 || 替代。 在sql_compatibility = 'MYSQL'的情况下,参数str1或str2为NULL会导致返回结果为NULL。 concat函数返回值类型为变长类型,和表中数据比较时,会因为拼接结果丢失字符串长度,导致比较结果不相等。 返回值类型:text。 示例: 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 gaussdb=# SELECT concat('Hello', ' World!'); concat -------------- Hello World! (1 row) gaussdb=# SELECT concat('Hello', NULL); concat -------- (1 row) gaussdb=# CREATE TABLE test_space(c char(10)); CREATE TABLE gaussdb=# INSERT INTO test_space values('a'); INSERT 0 1 -- 填充空格后仍然是定长字符串,预期可以查找到结果 gaussdb=# SELECT * FROM test_space WHERE c = 'a '; c ------------ a (1 row) -- 拼接结果为变长字符串,比对失败,找不到结果 gaussdb=# SELECT * FROM test_space WHERE c = 'a' || ' '; c --- (0 rows)
  • chr(cvalue int|bigint) 描述:将cvalue转换为对应字节序列的字符返回。 cvalue:cvalue支持类型是可以转换成int或bigint的类型,取值范围为[0, 2^32 - 1],对应unsigned int的范围,根据输入n的大小返回由1-4个字节组成的字符数组。其中在不同字符集中所返回的字节数组是相同的,但由于编码规则的不同会造成返回字符串的结果依赖于字符集编码。 当字符集为单字节编码的字符集时,会先将cvalue mod 256后返回一个ASCII码字符。 注意事项: 当输入的cvalue其中的某个字节为0的时候,输出会在该处截断。 当输入不符合现字符集的编码规则时会报错。 当输入为NULL或者0时返回NULL。 返回值类型:text。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 gaussdb=# SELECT chr(65); chr ----- A (1 row) gaussdb=# CREATE DATABASE gaussdb_o WITH DBCOMPATIBILITY 'ORA'; gaussdb=# \c gaussdb_o gaussdb_o=# SET a_format_version='10c'; gaussdb_o=# SET a_format_dev_version = 's1'; gaussdb_o=# SELECT chr(16705); chr ----- AA (1 row) -- 输出被截断 gaussdb_o=# SELECT chr(4259905); chr ----- A (1 row) gaussdb_o=# \c postgres gaussdb=# DROP DATABASE gaussdb_o; 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下,chr函数功能为根据输入大小返回对应字符序列:当前数据库编码字符集为多字节编码字符集时返回值为1-4个字节;当前数据库编码字符集为单字节编码字符集时返回值为将输入值通过mod 256运算后得到的单个字节。否则功能为:若当前数据库编码字符集为UTF-8字符集,则将输入作为unicode编码并返回一个UTF-8字符,若当前数据库编码字符集为其他字符集则返回ASCII码字符。
  • substr(string,from,count) 描述: 从参数string中抽取子字符串。 from表示抽取的起始位置。 count表示抽取的子字符串长度。 from为0时,按1处理。 from为正数时,抽取从from开始的count个字符。 from为负数时,抽取从倒数第n个开始的count个字符,n为from的绝对值。 count小于1时,返回null。 返回值类型:text。 示例: from为正数时: 1 2 3 4 5 gaussdb=# SELECT substr('ABCDEF',2,2); substr -------- BC (1 row) from为负数时: 1 2 3 4 5 gaussdb=# SELECT substr('ABCDEF',-3,2); substr -------- DE (1 row)
  • trim([leading |trailing |both] [characters] from string) 描述:从字符串string的开头、结尾或两边删除只包含characters中字符(缺省是一个空白)的最长的字符串。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT trim(BOTH 'x' FROM 'xTomxx'); btrim ------- Tom (1 row) 1 2 3 4 5 gaussdb=# SELECT trim(LEADING 'x' FROM 'xTomxx'); ltrim ------- Tomxx (1 row) 1 2 3 4 5 gaussdb=# SELECT trim(TRAILING 'x' FROM 'xTomxx'); rtrim ------- xTom (1 row)
  • nls_upper(string [, nlsparam]) 描述:把字符串转换为大写,可以指定排序规则来处理某些国家语言的特殊大写转换规则。nlsparam的格式为'nls_sort=sort_name',其中sort_name替换为具体的排序规则名。当不输入nlsparam参数时,该函数完全等同于upper。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT nls_upper('große'); nls_upper ----------- GROßE (1 row) 1 2 3 4 5 gaussdb=# SELECT nls_upper('große', 'nls_sort = XGerman'); nls_upper ----------- GROSSE (1 row) 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下才支持使用。
  • nls_lower(string [, nlsparam]) 描述:把字符串转换为小写,可以指定排序规则来处理某些国家语言的特殊小写转换规则。nlsparam的格式为'nls_sort=sort_name',其中sort_name替换为具体的排序规则名。当不输入nlsparam参数时,该函数完全等同于lower。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT nls_lower('INDIVISIBILITY'); nls_lower ---------------- indivisibility (1 row) 1 2 3 4 5 gaussdb=# SELECT nls_lower('INDIVISIBILITY', 'nls_sort = XTurkish'); nls_lower ---------------- ındıvısıbılıty (1 row) 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下才支持使用。
  • instr(string,substring[,position,occurrence]) 描述:从字符串string的position(缺省时为1)所指的位置开始查找并返回第occurrence(缺省时为1)次出现子串substring的位置的值。 当position为0时,返回0。 当position为负数时,从字符串倒数第n个字符往前逆向搜索。n为position的绝对值。 本函数以字符为计算单位,如一个汉字为一个字符。 返回值类型:integer。 示例: 1 2 3 4 5 gaussdb=# SELECT instr('corporate floor','or', 3); instr ------- 5 (1 row) 1 2 3 4 5 gaussdb=# SELECT instr('corporate floor','or',-3,2); instr ------- 2 (1 row)
  • initcap(string) 描述:将字符串中的每个单词的首字母转换为大写,其他字母转换为小写。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT initcap('hi THOMAS'); initcap ----------- Hi Thomas (1 row) 此函数在开启参数a_format_version值为10c和a_format_dev_version值为s2的情况下,如中文等无大小写区分的字符后接区分大小写的字符时,首字母会转换为大写,其他字母转换为小写。因此建议开启参数a_format_version值为10c和a_format_dev_version值为s2。
  • replace(string, substring) 描述:删除字符串string里出现的所有子字符串substring的内容。 string类型:text。 substring类型:text。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT replace('abcdefabcdef', 'cd'); replace ---------------- abefabef (1 row)
  • repeat(string text, number int ) 描述:将string重复number次。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT repeat('Pg', 4); repeat ---------- PgPgPgPg (1 row) 由于数据库内存分配机制限制单次内存分配不可超过1GB,因此number最大值不应超过(1G-x)/lengthb(string) - 1。x为头信息长度,通常大于4字节,其具体值在不同的场景下存在差异。
  • translate(string text, from text, to text) 描述:把在string中包含的任何匹配from中的字符转换为对应的在to中的字符。如果from比to长,删掉在from中出现的额外的字符。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT translate('12345', '143', 'ax'); translate ----------- a2x5 (1 row)
  • substr(string,from) 描述: 从参数string中抽取子字符串。 from表示抽取的起始位置。 from为0时,按1处理。 from为正数时,抽取从from到末尾的所有字符。 from为负数时,抽取字符串的后n个字符,n为from的绝对值。 返回值类型:text。 示例: from为正数时: 1 2 3 4 5 gaussdb=# SELECT substr('ABCDEF',2); substr -------- BCDEF (1 row) from为负数时: 1 2 3 4 5 gaussdb=# SELECT substr('ABCDEF',-2); substr -------- EF (1 row)
  • replace(string text, from text, to text) 描述:把字符串string里出现的所有子字符串from的内容替换成子字符串to的内容。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT replace('abcdefabcdef', 'cd', 'XXX'); replace ---------------- abXXXefabXXXef (1 row)
  • right(str text, n int) 描述:返回字符串中的后n个字符。当n是负值时,返回除前|n|个字符以外的所有字符。 返回值类型:text。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT right('abcde', 2); right ------- de (1 row) gaussdb=# SELECT right('abcde', -2); right ------- cde (1 row)
  • split_part(string text, delimiter text, field int) 描述:根据delimiter分隔string返回生成的第field个子字符串(从出现第一个delimiter的text为基础)。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT split_part('abc~@~def~@~ghi', '~@~', 2); split_part ------------ def (1 row)
  • rpad(string text, length int [, fill text]) 描述:使用填充字符fill(缺省时为空白),把string填充到length长度。如果string已经比length长则将其从尾部截断。 返回值类型:text。 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下: 参数length表示字符串显示长度,单个字符的显示长度按照O兼容处理。 函数执行过程中出现length剩余长度为1且下一个字符显示长度为2,在字符串右侧添加一个空格字符。 参数length入参若为小数则不会被四舍五入,而是被截断。 参数string与fill不支持不符合编码规范的输入。 参数string有长度限制,若填充后大小超过1G会报错。 在其他情况下: 参数length表示字符串中字符总长度,单个字符的长度固定为1。 参数length入参若为小数则被四舍五入。 参数string与fill不支持不符合编码规范的输入。 参数string有长度限制,若填充后大小超过1G会报错。
  • substr(text,int)/substr(str FROM pos) 描述:其中str为目标字符串,pos为字符串中的位置。输出str从pos位置开始到字符结束的字符串。 返回值类型:text。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT substr('stringtest' from 4); substr --------- ingtest (1 row) gaussdb=# SELECT substr('stringtest', 4); substr --------- ingtest (1 row)
  • regexp_split_to_table(string text, pattern text [, flags text]) 描述:用POSIX正则表达式作为分隔符,分隔string。如果没有与pattern的匹配,该函数返回string。如果至少有一个匹配,对每一个匹配,它都返回从上一个匹配的末尾(或者串的开头)到这次匹配开头之间的文本。当没有更多匹配时,它返回从上一次匹配的末尾到串末尾之间的文本。 flags参数包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配,默认替换每一个匹配的子字符串,而不仅仅是替换第一个子字符串。 返回值类型:setof text。 示例: 1 2 3 4 5 6 gaussdb=# SELECT regexp_split_to_table('hello world', E'\\s+'); regexp_split_to_table ----------------------- hello world (2 rows)
  • regexp_matches(string text, pattern text [, flags text]) 描述:返回string中所有匹配POSIX正则表达式的子字符串。如果pattern不匹配,该函数不返回行。如果模式不包含圆括号子表达式,则每一个被返回的行都是一个单一元素的文本数组,其中包括匹配整个模式的子串。如果模式包含圆括号子表达式,该函数返回一个文本数组,它的第n个元素是匹配模式的第n个圆括号子表达式的子串。 flags参数为可选参数,包含零个或多个改变函数行为的单字母标记。i表示进行大小写无关的匹配,g表示替换每一个匹配的子字符串而不仅仅是第一个。 如果提供了最后一个参数,但参数值是空字符串(''),且数据库SQL兼容模式设置为ORA的情况下,会导致返回结果为空集。这是因为ORA兼容模式将''作为NULL处理,避免此类行为的方式有如下几种: 将数据库SQL兼容模式改为TD; 不提供最后一个参数,或最后一个参数不为空字符串。 返回值类型:setof text[]。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 gaussdb=# SELECT regexp_matches('foobarbequebaz', '(bar)(beque)'); regexp_matches ---------------- {bar,beque} (1 row) gaussdb=# SELECT regexp_matches('foobarbequebaz', 'barbeque'); regexp_matches ---------------- {barbeque} (1 row) gaussdb=# SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g'); regexp_matches ---------------- {bar,beque} {bazil,barf} (2 rows)
  • 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:可选参数,包含零个或多个改变函数匹配行为的单字母标记。flags 支持的选项值及含义描述如表3所示。 返回值类型:int。 示例: gaussdb=# SELECT regexp_instr('foobarbaz','b(..)', 1, 1, 0) AS RESULT; result -------- 4 (1 row) gaussdb=# SELECT regexp_instr('foobarbaz','b(..)', 1, 2, 0) AS RESULT; result -------- 7 (1 row)
  • regexp_match(string text, pattern text [, flags text]) 描述:返回一个字符串数组,为POSIX正则表达式与字符串第一个匹配所得到的子串。如果pattern不匹配,该函数返回空行。如果模式不包含圆括号子表达式,则每一个被返回的行都是一个单一元素的文本数组,其中包括匹配整个模式的子串。如果模式包含圆括号子表达式,该函数返回一个文本数组,它的第n个元素是匹配模式的第n个圆括号子表达式的子串。 flags参数为可选参数,不带flags默认使用紧语法匹配。flags参数包含零个或多个改变函数行为的单字母标记,支持的标记如表4所示。 表4 flags参数说明 选项 描述 'b' POSIX正则表达式变为BRE(基础正则表达式)。 'c' 大小写敏感的匹配。 'e' POSIX正则表达式变为ERE(扩展正则表达式)。 'i' 大小写不敏感的匹配,即在匹配时不区分大小写。 'n' 新行敏感的匹配,将字符串视为多行,^和$匹配每行的开头和结尾,(.)不可以匹配换行。 'm' 新行敏感的匹配,将字符串视为多行,^和$匹配每行的开头和结尾,(.)不可以匹配换行,n的匹配模式一致。 'p' 部分新行敏感的匹配,单行的开头和结尾,(.)不能匹配换行符,^只能匹配第一行开头,$只能匹配最后一行末尾。 'q' 将正则表达式视为一个文本字符串,所有都是普通字符。 's' 非新行敏感匹配,即将字符串视为单行,^和$匹配单行的开头和结尾,此模式下,正则表达式中的点号(.)可以匹配任何字符,包括换行符。 't' 紧语法匹配。 'w' 逆部分新行敏感的匹配,正则表达式中^匹配每行的开头,$只能匹配最后一行的结尾,(.)可以匹配任何字符,包括换行符。 'x' 扩展语法匹配,忽略RE中的空白字符和注释。以下三种场景除外: 前置了\的空白字符或#将被保留。 方括号中的空白字符或#将被保留。 在多字符符号里面不能出现空白和注释,例如“(?:”。 如果参数中存在空字符串(''),且数据库兼容模式设置为ORA的情况下,会导致返回结果为NULL,原因是ORA兼容模式下空字符串将''作为NULL处理。 返回值类型:setof text[]。 示例: gaussdb=# SELECT regexp_match('foobarbequebaz', '(bar)(beque)'); regexp_match -------------- {bar,beque} (1 row) gaussdb=# SELECT (regexp_match('foobarbequebaz', 'bar.*que'))[1]; regexp_match -------------- barbeque (1 row) gaussdb=# SELECT regexp_match('Learning #PostgreSQL', 'R', 'c'); regexp_match -------------- (1 row) gaussdb=# SELECT regexp_match('hello world', 'h e l l o', 'x'); regexp_match -------------- {hello} (1 row)
  • regexp_split_to_array(string text, pattern text [, flags text ]) 描述:用POSIX正则表达式作为分隔符,分隔string。和regexp_split_to_table相同,不过regexp_split_to_array会把它的结果以一个text数组的形式返回。 返回值类型:text[]。 示例: 1 2 3 4 5 gaussdb=# SELECT regexp_split_to_array('hello world', E'\\s+'); regexp_split_to_array ----------------------- {hello,world} (1 row)
  • substring(string from pattern) 描述:截取匹配POSIX正则表达式的子字符串。如果没有匹配它返回空值,否则返回文本中匹配模式的那部分。 返回值类型:text。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 gaussdb=# SELECT substring('Thomas' from '...$'); substring ----------- mas (1 row) gaussdb=# SELECT substring('foobar' from 'o(.)b'); result -------- o (1 row) gaussdb=# SELECT substring('foobar' from '(o(.)b)'); result -------- oob (1 row) 如果POSIX正则表达式模式包含任何圆括号,那么将返回匹配第一对子表达式(对应第一个左圆括号的) 的文本。如果在表达式里使用圆括号而又不导致这个例外,那么可以在整个表达式外边放上一对圆括号。 该函数在sql_compatibility = 'MYSQL',且GUC参数b_format_version = '5.7'、b_format_dev_version = 's1'时,按照substr(str FROM pos)函数用法使用,其输出的结果和行为也和substr(str FROM pos)函数一致。
  • regexp_count(string text, pattern text [, position int [, flags text]]) 描述:获取满足匹配的子串个数。 参数说明: string:用于匹配的源字符串。 pattern:用于匹配的正则表达式模式串。 position:表示从源字符串的第几个字符开始匹配,为可选参数,默认值为1。 flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。flags 支持的选项值及含义描述如表3所示。 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下,以'\'结尾的pattern参数为合法的。 返回值类型:int。 示例: gaussdb=# SELECT regexp_count('foobarbaz','b(..)', 5) AS RESULT; result -------- 1 (1 row)
  • regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]]) 描述:正则表达式的抽取子串函数。与substr功能相似,正则表达式出现多个并列的括号时,也全部处理。 参数说明: string:用于匹配的源字符串。 pattern:用于匹配的正则表达式模式串。 position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。 occurrence:可选参数,表示抽取第几个满足匹配的子串,默认值为1。 flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。flags 支持的选项值及含义描述如表3所示。 表3 flags 支持的选项值 选项 描述 'b' 按照无扩展的 BRE 规则匹配。 'c' 大小写敏感匹配。 'e' 按照扩展的 ERE 规则匹配。 'i' 大小写不敏感匹配。 'm' 多行模式匹配。flags 中包含'm' 时,按照多行模式匹配,否则按照单行模式匹配。 'n' n选项的含义和GUC参数behavior_compat_options及数据库当前的兼容模式有关: 数据库SQL语法兼容模式为ORA或MySQL,且GUC参数behavior_compat_options值包含aformat_regexp_match时,n选项表示“.”能够匹配换行符('\n');flags未指定'n'选项时,“.”不会匹配换行符。 其他情况下,'n'选项和'm'选项的含义一样。 'p' 部分新行敏感的匹配,影响'.'和方括号表达式,和新行敏感的匹配('m'或'n')一样,但是不影响^和$。 'q' 普通字符匹配。 's' 单行模式匹配,含义与'm'、'n'相反。 't' 紧凑模式匹配,空白符匹配自身。 'w' 逆部分新行匹配,与'p'含义相反。 'x' 宽松模式匹配,忽略空白符。 返回值类型:text。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT regexp_substr('str','[ac]'); regexp_substr --------------- (1 row) gaussdb=# SELECT regexp_substr('foobarbaz', 'b(..)', 3, 2) AS RESULT; result -------- baz (1 row)
  • substring(string from pattern for escape) 描述:截取匹配SQL正则表达式的子字符串。声明的模式必须匹配整个数据串,否则函数失败并返回空值。为了标识在成功的时候应该返回的模式部分,模式必须包含两个逃逸字符引用的部分,并且逃逸字符后面要添加双引号(")。匹配这两个标记之间的模式的文本将被返回。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT substring('Thomas' from '%#"o_a#"_' for '#'); substring ----------- oma (1 row) 该函数在sql_compatibility = 'MYSQL',且GUC参数b_format_version = '5.7'、b_format_dev_version = 's1'时,按照substr(str FROM pos FOR len)函数用法使用,其输出的结果和行为也和substr(str FROM pos FOR len)函数一致。
  • substring_inner(string [from int] [for int]) 描述:截取子字符串,from int表示从第几个字符开始截取,for int表示截取几个字节。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT substring_inner('adcde', 2,3); substring_inner ----------------- dcd (1 row)
  • substring(string [from int] [for int]) 描述:截取子字符串,from int表示从第几个字符开始截取,for int表示截取几个字节。 返回值类型:text。 示例: 1 2 3 4 5 gaussdb=# SELECT substring('Thomas' from 2 for 3); substring ----------- hom (1 row) 此函数在MySQL模式数据库中,且GUC参数 b_format_version = '5.7'和b_format_dev_version = 's1'时[from int]可以为负数,此时表示从后往前数的第几个字符,不设置参数时[from int]为负数结果为空。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全