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

  • substring(string from pattern for escape)

    描述:截取匹配SQL正则表达式的子字符串。声明的模式必须匹配整个数据串,否则函数失败并返回空值。为了标识在成功的时候应该返回的模式部分,模式必须包含逃逸字符的两次出现,并且后面要跟上双引号(")。匹配这两个标记之间的模式的文本将被返回。

    返回值类型:text

    示例:

    openGauss=# SELECT substring('Thomas' from '%#"o_a#"_' for '#');
     substring
    -----------
     oma
    (1 row)
    
  • rawcat(raw,raw)

    描述:字符串拼接函数。

    返回值类型:raw

    示例:

    openGauss=# SELECT rawcat('ab','cd');
     rawcat
    --------
     ABCD
    (1 row)
    
  • regexp_like(text,text,text)

    描述:正则表达式的模式匹配函数。

    返回值类型:bool

    示例:

    openGauss=# SELECT regexp_like('str','[ac]');
     regexp_like
    -------------
     f
    (1 row)
    
  • regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]])

    描述:正则表达式的抽取子串函数。与substr功能相似,正则表达式出现多个并列的括号时,也全部处理。

    参数说明:

    • string:用于匹配的源字符串。
    • pattern:用于匹配的正则表达式模式串。
    • 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

    示例:

    openGauss=# SELECT regexp_substr('str','[ac]'); 
       regexp_substr 
      --------------- 
    
      (1 row) 
    
      openGauss=# 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' 字符,flags中没有指定n时,默认.不能匹配 '\n' 字符;值不包含aformat_regexp_match时,. 默认能匹配'\n'字符。n选项的含义与m选项一致。可选的参数包括b,c,e,i,m,n,p,q,s,t,w,x。

    返回值类型:int

    示例:

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

    示例:

    openGauss=# SELECT regexp_instr('foobarbaz','b(..)', 1, 1, 0) AS RESULT; 
    result 
    -------- 
    4 
    (1 row) 
    
    openGauss=# SELECT regexp_instr('foobarbaz','b(..)', 1, 2, 0) AS RESULT; 
    result 
    -------- 
    7 
    (1 row)
posted @ 2024-07-30 10:35  openGauss-bot  阅读(20)  评论(0)    收藏  举报