一、拼接
1.使用 || 来实现
SELECT '你'||'好!' title FROM dual;
2.使用concat (不支持多个字符串的拼接,但是可以嵌套调用)
SELECT concat('你'||'好','吗?') title FROM dual;
二、截取
1.SUBSTR(string,start, [length]) 这个应该都会用
三、替换
1.TRANSLATE(char, from, to)返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。若from比to字符串长,那么在from中比to中多出的字符将会被删除,三个参数中有一个是空,返回值也将是空值。
SELECT translate('cbcaadefg','abc','wo') FROM dual;
2.REPLACE(char, search_string,replacement_string)
select REPLACE('fgsgswsfgs', 'fg' ,'j') 返回值 from dual;
* replace与translate都是替代函数,只不过replace针对的是字符串,而translate针对的是单个字符。
四、查找
1.instr( string1, string2 [, start_position [, nth_appearance ] ] ) / instr(源字符串, 目标字符串, 起始位置, 匹配序号)
SELECT INSTR('bbacdabcda','a') FROM dual;-- 最先出现的位置1
SELECT INSTR('bbacdabcda','a',4) FROM dual;-- 字符串第4个位置起,查找a出现的序号 6
SELECT INSTR('bbacdabcda','a',2,2) FROM dual;
2.利用instr 函数查找字符串(全匹配)在数组中的位置
1.思路:先将数组转换为字符串,然后再在前后加上‘,’,利用instr来instr('source,','||find_str||',') 来进行查找
五、字符长度
length(char) 求字符串的长度 select length('ACD') from dual;
六、Oracle正则表达式
1.REGEXP_SUBSTR(String,pattern,position,occurrence,modifier)
-String :需要正则处理的字符串
-pattern:进行匹配的正则表达式
-position:起始位置,从第几个字符串开始正则表达式(默认1)
-occurrence:标识第几个匹配组,默认1
-modifier:模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
1.查询使用正则分割后的第一个值,也就是17
SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL;
2.获取一个多个数值的列,从而能够让结果以多行的形式展示出来
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=7;
3.将上面REGEXP_SUBSTR的occurrence关联
SELECT NVL(REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i'), 'NULLL') AS STR
FROM DUAL CONNECT BY LEVEL <= 7;