openGauss SQL参考—函数和操作符:字符处理函数和操作符(7)

  • chr(integer)

    描述:给出ASCII码的字符。

    返回值类型:varchar

    示例:

    openGauss=# SELECT chr(65);
     chr
    -----
     A
    (1 row)
    
  • regexp_substr(source_char, pattern)

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

    返回值类型:text

    示例:

    openGauss=# 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

    示例:

    openGauss=# SELECT regexp_replace('Thomas', '.[mN]a.', 'M');
     regexp_replace
    ----------------
     ThM
    (1 row)
    openGauss=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 'g') AS RESULT;                                                    
       result    
    -------------
     fooXarYXazY
    (1 row)
    
  • repexp_replace(string text, pattern text [, replacement text [, position int [, occurrence int [, flags text]]]])

    描述:替换匹配POSIX正则表达式的子字符串。 如果没有匹配pattern,那么返回不加修改的string串。 如果有匹配,则返回的string串里面的匹配子串将被replacement串替换掉。

    参数说明:

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

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

    • 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

    示例:

    openGauss=# SELECT regexp_replace('foobarbaz','b(..)', E'X\\1Y', 2, 2, 'n') AS RESULT; 
    result 
    ------------ 
    foobarXazY 
    (1 row)
    
  • concat_ws(sep text, str"any" [, str"any" [, …] ])

    描述:以第一个参数为分隔符,链接第二个以后的所有参数。NULL参数被忽略。

     须知:

    • 如果第一个参数值是NULL,会导致返回结果为NULL。

    • 如果第一个参数值是空字符串(''),且数据库SQL兼容模式设置为A的情况下,会导致返回结果为NULL。这是因为A兼容模式>将''作为NULL处理,避免此类行为,可以将数据库SQL兼容模式改为B、C或者PG。

    返回值类型:text

    示例:

    openGauss=# SELECT concat_ws(',', 'ABCDE', 2, NULL, 22);
     concat_ws
    ------------
     ABCDE,2,22
    (1 row)
    
  • nlssort(string text, sort_method text)

    描述:以sort_method指定的排序方式返回字符串在该排序模式下的编码值,该编码值可用于排序,其决定了string在这种排序模式下的先后位置。目前支持的sort_method为'nls_sort=schinese_pinyin_m'和'nls_sort=generic_m_ci'。其中,'nls_sort=generic_m_ci'仅支持纯英文不区分大小写排序。

    string类型:text

    sort_method类型:text

    返回值类型:text

    示例:

    openGauss=# SELECT nlssort('A', 'nls_sort=schinese_pinyin_m'); 
      nlssort    
    ----------------
     01EA0000020006 
    (1 row) 
    
    openGauss=# SELECT nlssort('A', 'nls_sort=generic_m_ci'); 
      nlssort    
    ---------------- 
     01EA000002 
    (1 row)
    
  • convert(string bytea, src_encoding name, dest_encoding name)

    描述:以dest_encoding指定的目标编码方式转化字符串bytea。src_encoding指定源编码方式,在该编码下,string必须是合法的。

    返回值类型:bytea

    示例:

    openGauss=# SELECT convert('text_in_utf8', 'UTF8', 'GBK');
              convert
    ----------------------------
     \x746578745f696e5f75746638
    (1 row)
    

     说明: 如果源编码格式到目标编码格式的转化规则不存在,则字符串不进行任何转换直接返回,如GBK和LATIN1之间的转换规则是不存在的,具体转换规则可以通过查看系统表pg_conversion获得。 示例:

    openGauss=# show server_encoding;
    server_encoding
    -----------------
    LATIN1
    (1 row)
    openGauss=# 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)
    
  • convert_from(string bytea, src_encoding name)

    描述:以数据库的编码方式转化字符串bytea。

    src_encoding指定源编码方式,在该编码下,string必须是合法的。

    返回值类型:text

    示例:

    openGauss=# SELECT convert_from('text_in_utf8', 'UTF8');
     convert_from
    --------------
     text_in_utf8
    (1 row)
    
  • convert_to(string text, dest_encoding name)

    描述:将字符串转化为dest_encoding的编码格式。

    返回值类型:bytea

    示例:

    openGauss=# SELECT convert_to('some text', 'UTF8');
          convert_to
    ----------------------
     \x736f6d652074657874
    (1 row)
    
  • string [NOT] LIKE pattern [ESCAPE escape-character]

    描述:模式匹配函数。

    如果pattern不包含百分号或者下划线,该模式只代表它本身,这时候LIKE的行为就像等号操作符。在pattern里的下划线(_)匹配任何单个字符;而一个百分号(%)匹配零或多个任何字符。

    要匹配下划线或者百分号本身,在pattern里相应的字符必须前导逃逸字符。缺省的逃逸字符是反斜杠,但是用户可以用ESCAPE子句指定一个。要匹配逃逸字符本身,写两个逃逸字符。

    返回值类型:Boolean

    示例:

    openGauss=# SELECT 'AA_BBCC' LIKE '%A@_B%' ESCAPE '@' AS RESULT;
     result
    --------
     t
    (1 row)
    
    openGauss=# SELECT 'AA_BBCC' LIKE '%A@_B%' AS RESULT;
     result
    --------
     f
    (1 row)
    
    openGauss=# SELECT 'AA@_BBCC' LIKE '%A@_B%' AS RESULT;
     result
    --------
     t
    (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

    示例:

    openGauss=# SELECT regexp_like('ABC', '[A-Z]');
     regexp_like
    -------------
     t
    (1 row)
    
    openGauss=# SELECT regexp_like('ABC', '[D-Z]');
     regexp_like
    -------------
     f
    (1 row)
    
    openGauss=# SELECT regexp_like('ABC', '[a-z]','i');
     regexp_like
    -------------
     t
    (1 row)
    
  • format(formatstr text [, str"any" [, …] ])

    描述:格式化字符串。

    返回值类型:text

    示例:

    openGauss=# SELECT format('Hello %s, %1$s', 'World');
           format       
    --------------------
     Hello World, World
    (1 row)
    
  • md5(string)

    描述:将string使用MD5加密,并以16进制数作为返回值。

     说明:

    MD5加密算法安全性低,存在安全风险,不建议使用。

    返回值类型:text

    示例:

    openGauss=# SELECT md5('ABC');
                   md5                
    ----------------------------------
     902fbdd2b1df0c4f70b4a5d23525e932
    (1 row)
    
  • sha(string) / sha1(string)

    描述:将string使用SHA1加密,并以16进制数作为返回值,sha和sha1函数功能相同。

     说明: SHA1加密算法安全性低,存在安全风险,不建议使用。 该函数仅在openGauss兼容MY类型时(即sql_compatibility = 'B')有效,其他类型不支持该函数。

    返回值类型:text

    示例:

    openGauss=# select sha('ABC');
                       sha
    ------------------------------------------
     3c01bdbb26f358bab27f267924aa2c9a03fcfdb8
    (1 row)
    openGauss=# select sha1('ABC');
                       sha1
    ------------------------------------------
     3c01bdbb26f358bab27f267924aa2c9a03fcfdb8
    (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函数会在日志中会记录哈希的明文,因此不建议用户用该函数加密秘钥等敏感信息。 该函数仅在openGauss兼容MY类型时(即sql_compatibility = 'B')有效,其他类型不支持该函数。

    返回值类型:text

    示例:

    openGauss=# select sha2('ABC',224);
                               sha2
    ----------------------------------------------------------
     107c5072b799c4771f328304cfe1ebb375eb6ea7f35a3aa753836fad
    (1 row)
    openGauss=# select sha2('ABC',256);
                                   sha2
    ------------------------------------------------------------------
     b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78
    (1 row)
    openGauss=# select sha2('ABC',0);
                                   sha2
    ------------------------------------------------------------------
     b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78
    (1 row)
    
  • decode(string text, format text)

    描述:将二进制数据从文本数据中解码。

    返回值类型:bytea

    示例:

    openGauss=# SELECT decode('MTIzAAE=', 'base64');
        decode    
    --------------
     \x3132330001
    (1 row)
    
  • similar_escape(pat text, esc text)

    描述:将一个 SQL:2008风格的正则表达式转换为POSIX风格。

    返回值类型:text

    示例:

    openGauss=# select similar_escape('\s+ab','2');
     similar_escape
    ----------------
     ^(?:\\s+ab)$
    (1 row)
    
  • svals(hstore)

    描述:获取hstore中的值。

    返回值类型:SETOF text

    示例:

    openGauss=# select svals('"aa"=>"bb"');
     svals
    -------
     bb
    (1 row)
    
  • tconvert(key text, value text)

    描述:将字符串转换为hstore格式。

     

     

posted @ 2024-07-30 10:37  openGauss-bot  阅读(120)  评论(0)    收藏  举报