字符串函数
wm_concat(text)
多行记录拼接成单行记录显示。
atlasdb=# select * from t; col ----- 1 2 3 4 100 20 (6 rows) atlasdb=# select wm_concat(col::text) as qlr from t; qlr ---------------- 1,2,3,4,100,20 (1 row)
dump(expr)
返回在数据库内部对前面的这个expr存储形式。
atlasdb=# select information_schema.dump('asdasdadasd'); dump ----------------------------------------------------------------- Typ=25 Len=15: 60,0,0,0,97,115,100,97,115,100,97,100,97,115,100 (1 row)
empty_clob()
返回一个空CLOB类型。
atlasdb=# select empty_clob(); empty_clob ------------ (1 row)
hextoraw(char)
将十六进制字符串转换为RAW类型的值。
atlasdb=# select oracle.hextoraw('ABCDEF'); hextoraw ---------- xabcdef (1 row)
instr(string, substring[, position[, occurrence]])
返回从字符string的第position位置开始,第occurrence次出现的子串substring起始位置,默认从字符串string首部开始第一次出现的位置。
atlasdb=# select instr('asdasdasdas','da'); instr ------- 3 (1 row)
nlssort(char [, nlsparam])
按照nlsparam指定的排序字符集对字符串char进行排序,默认使用char字符串字符集排序;
atlasdb=# select nlssort('Vaacadtw'); nlssort -------------------- x5661616361647477 (1 row)
lengthb(char)
返回char字符的字节长度,char支持的类型为所有字符串类型(如CHAR,VARCHAR2, NCHAR,NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。
atlasdb=# select lengthb('dasdas'); lengthb --------- 6 (1 row)
listagg(measure_expr[, 'delimiter'])
以特定的分隔符将字段进行拼接。
atlasdb=# select listagg('a',','); listagg --------- a (1 row)
nvl2(e1,e2,e3)
如果e1为NULL,则函数返回e3,若e1不为null,则返回e2。
atlasdb=# select information_schema.nvl2(1,2,3); nvl2 ------ 2 (1 row)
NVL
NVL 查询结果中用字符串替换null。
atlasdb=# select nvl('',1); nvl ----- 1 (1 row)
rawtohex(raw)
将RAW类型的值转换为十六进制字符串。
atlasdb=# select oracle.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表示正则表达式分组匹配的组号。
atlasdb=# SELECT REGEXP_INSTR ('my is itMyhome', 'm', 1, 2, 0, 'c') atlasdb-# FROM dual; regexp_instr -------------- 13 (1 row)
regexp_replace(source_char,pattern [, replace_string [, position> [, occurrence [, match_parameter ] ] ] ] )
搜索的字符串的正则表达式模式REPLACE函数的功能。
atlasdb=# 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出现的次数。
atlasdb=# SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL; str ----- 17 (1 row)
TRIM
TRIM修剪字符串中的前导或尾随字符(或两者)。
atlasdb=# select trim(leading 'a' from 'abcdddasds'); ltrim ----------- bcdddasds (1 row)
rtrim(c1,[,c2])
删除左边出现的字符串。
atlasdb=# select ltrim('sdaf','s'); ltrim ------- daf (1 row)
rtrim(c1,[,c2])
删除右边出现的字符串。
atlasdb=# select rtrim('sdaf','f'); rtrim ------- sda(1 row)
substrb(char, position[, substring_length])
返回char字符串中第position个字节开始,长度为substring_length字节的子字符串。若不指定substring_length,则截取到字符串结尾。
atlasdb=# select substrb('sadas',1,3); substrb --------- sad (1 row)
to_blob(char)
将char字符串转换为BLOB类型,char支持的类型为所有字符串类型(如CHAR, VARCHAR2, NCHAR, NVARCHAR2等)或可隐式转换为字符串的类型(如integer等)。
atlasdb=# select to_blob('abcdsa'); to_blob ---------------- x616263647361 (1 row)
to_clob(char)
将char字符串转换为CLOB数据类型。
atlasdb=# select to_clob('aaa'); to_clob --------- aaa (1 row)
to_multi_byte(str)
将单字节输入字符串转换为多字节字符串。
atlasdb=# select oracle.to_multi_byte('a'); to_multi_byte --------------- a (1 row)
to_single_byte(str)
全角的数字/字母/标点符号转半角。
atlasdb=# SELECT To_Single_Byte('aaa') FROM dual; to_single_byte ---------------- aaa (1 row)
decode
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
atlasdb=# select decode('1','2','v2','3','v3','nofound'); case --------- nofound (1 row)