字符串相关函数
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)