VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

字符串相关函数

  • hextoraw(char)

    将十六进制字符串转换为RAW类型的值。

    vastbase=# select hextoraw('ABCDEF');
    hextoraw 
    ----------
    ABCDEF
    (1 row)
    
  • instr(string, substring[, position[, occurrence]])

    返回从字符string的第position位置开始,第occurrence次出现的子串substring起始位置,默认从字符串string首部开始第一次出现的位置。

    vastbase=# select instr('asdasdasdas','da');
    instr 
    -------
     3
    (1 row)
    
  • lengthb(char)

    返回char字符的字节长度,char支持的类型为所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。

    vastbase=# select lengthb('dasdas');
    lengthb 
    ---------
       6
    (1 row)
    
  • listagg(measure_expr[, 'delimiter'])

    以特定的分隔符将字段进行拼接。

    vastbase=# select pg_catalog.listagg(ename,',') from emp;
                                 listagg                                 
    -------------------------------------------------------------------------
    SMITH,ALLEN,WARD,JONES,MARTIN,BLAKE,CLARK,KING,TURNER,JAMES,FORD,MILLER
    (1 row)
    
  • nvl2

    nvl2(e1,e2,e3)

    如果e1为NULL,则函数返回e3,若e1不为null,则返回e2。

    vastbase=# select nvl2(1,2,3) from dual;
    nvl2 
    ------
    2
    (1 row)
    
    vastbase=# select nvl2(null,2,3) from dual;
    nvl2 
    ------
    3
    (1 row)
    
  • NVL

    NVL 查询结果中用字符串替换null。

    vastbase=#  select ename,nvl(comm,0) as comm  from emp;
    ename  |  comm   
    --------+---------
    SMITH  |       0
    ALLEN  |  300.00
    WARD   |  500.00
    JONES  |       0
    MARTIN | 1400.00
    BLAKE  |       0
    CLARK  |       0
    KING   |       0
    TURNER |    0.00
    JAMES  |       0
    FORD   |       0
    MILLER |       0
    (12 rows)
    
  • rawtohex(raw)

    将RAW类型的值转换为十六进制字符串。

    vastbase=#  select rawtohex('s');
    rawtohex 
    ----------
    73
    (1 row)
    
  • regexp_instr(source_char,pattern[, position[, occurrence[,return_opt[, match_param[, subexpr]]]]])

    该函数拓展了INSTR函数的功能,允许使用正则表达式匹配,返回值类型为INTEGER。position表示查找起始位置。occurrence表示查找pattern在source_char的第几次出现。return_opt:取值为0表示返回模式匹配的起始位置。取值为1表示返回模式匹配的结束位置。match_param表示正则表达式模式匹配控制参数,如区分大小写等。subexpr表示正则表达式分组匹配的组号。

    vastbase=# SELECT REGEXP_INSTR ('my is itMyhome', 'm', 1, 2, 0, 'c') from dual;
    regexp_instr 
    --------------
           13
    (1 row)
    
  • regexp_replace(source_char,pattern [, replace_string [, position[, occurrence [, match_parameter ] ] ] ] )

    搜索的字符串的正则表达式模式REPLACE函数的功能。

    vastbase=# select regexp_replace('0123456789','01234','0abc') from dual;
    regexp_replace 
    ----------------
    0abc56789
    (1 row)
    
  • regexp_substr(source_char,pattern[,position[,occurrence[,match_param[,subexpr]]]])

    按正则表达式在source_char字符串中匹配子字符串。source_char为查找的输入字符串,支持所有字符串类型(如CHAR,VARCHAR2, NCHAR,NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。pattern为子字符串匹配的正则表达式。position为指定匹配的起始字符位置。occurrence为pattern在source_char出现的次数。

    vastbase=# SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL;  
    str 
    -----
    17
    (1 row)
    
  • TRIM

    TRIM修剪字符串中的前导或尾随字符(或两者)。

    vastbase=# select trim(leading 'a' from 'abcdddasds');
    ltrim   
    -----------
    bcdddasds
    (1 row)
    
  • ltrim(c1,[,c2])

    删除左边出现的字符串。

    vastbase=# select ltrim('sdaf','s');
    ltrim 
    -------
    daf
    (1 row)
    
  • rtrim(c1,[,c2])

    删除右边出现的字符串。

    vastbase=# select ltrim('sdaf','s');
    ltrim 
    -------
    daf
    (1 row)
    
  • substrb(char, position[, substring_length])

    返回char字符串中第position个字节开始,长度为substring_length字节的子字符串。若不指定substring_length,则截取到字符串结尾。

    vastbase=# select substrb('sadas',1,3);
    substrb 
    ---------
    sad
    (1 row)
    
  • to_clob(char)

    将char字符串转换为CLOB数据类型。

    vastbase=# select to_clob('aaa');
    to_clob 
    ---------
    aaa
    (1 row)
    
  • decode

    decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

    vastbase=# select decode('1','2','v2','3','v3','nofound');
    case   
    ---------
    nofound
    (1 row)