参考:
一、oracle操作字符串:拼接、替换、截取、查找;总体来说这篇文章还是写的很清晰的,'和''就不要过多纠结了
二、oracle中的trim函数使用介绍
--字符串去空格
--输出:a b c;
SELECT TRIM(' a b c ') || ';' FROM dual;
SELECT TRIM(BOTH FROM ' a b c ') || ';' FROM dual;
--输出: a b c;
SELECT TRIM(TRAILING FROM ' a b c ') || ';' FROM dual;
SELECT RTRIM(' a b c ') || ';' FROM dual;
--输出:a b c ;
SELECT TRIM(LEADING FROM ' a b c ') || ';' FROM dual;
SELECT LTRIM(' a b c ') || ';' FROM dual;
--字符串去除指定字符
--注意:只能指定一位字符
--输出:111;
SELECT TRIM('0' from '000111000') || ';' FROM dual;
--输出:111;
SELECT TRIM(BOTH '0' from '000111000') || ';' FROM dual;
--输出:000111;
SELECT TRIM(TRAILING '0' from '000111000') || ';' FROM dual;
--输出:111000;
SELECT TRIM(LEADING '0' from '000111000') || ';' FROM dual;
--字符串替换
--将原字符(第一个参数)中的字符(第二个参数)替换为新的字符(第三个参数)
--输出:隔壁邻居:王五
SELECT REPLACE('隔壁邻居:张三', '张三', '王五') FROM dual;
--字符串查找
--查找字符串(参数一)中,字符(参数二)从位置(参数三)开始,第几次(参数四)出现的位置,找不到返回0
--注意:位置(参数二)从1开始,否则找不到。返回结果为位置,从1开始
--输出:1
SELECT INSTR('隔壁邻居:张三', '隔', '1', '1') FROM dual;
--输出:0
SELECT INSTR('隔壁邻居:张三', '隔', '0', '1') FROM dual;
--字符串截取
--从位置(参数二)开始,截取字符串(参数一),N(参数三)个字符
--注意:位置(参数二)从1开始,可以小于1,效果和1相同。字符个数(参数三)可省略,省略时默认截取到字符串末尾
--输出:隔壁邻
SELECT SUBSTR('隔壁邻居:张三', 1, 3) FROM dual;
--输出:居:张三
SELECT SUBSTR('隔壁邻居:张三', 4) FROM dual;
--字符串查找+截取
--截取某个字符串后的字符
--思路一:用INSTR定位位置,再用SUBSTR截取
--输出:张三,年龄:18
SELECT SUBSTR('隔壁邻居:张三,年龄:18', INSTR('隔壁邻居:张三', ':', '1', '1') + 1) FROM dual;
--思路二:直接使用字符串替换
--输出:张三,年龄:18
SELECT REPLACE('隔壁邻居:张三,年龄:18', '隔壁邻居:', '') FROM dual;
--截取某个字符串后,另一个字符串前的字符
--思路一:大致与前面一样,只是需要再根据位置计算一下截取字符串的长度(长度=后一个字符位置-1-前一个字符长度)
--输出:张三
SELECT SUBSTR('隔壁邻居:张三,年龄:18',
INSTR('隔壁邻居:张三,年龄:18',':','1','1') + 1,
(INSTR('隔壁邻居:张三,年龄:18', ',', '1', '1')-1-INSTR('隔壁邻居:张三,年龄:18', ':', '1', '1'))
)
FROM dual;
--思路二:截两次
--第一次
--输出:隔壁邻居:张三
SELECT SUBSTR('隔壁邻居:张三,年龄:18', 1, INSTR('隔壁邻居:张三,年龄:18', ',', '1', '1') - 1) FROM dual;
--第二次
--输出:张三
SELECT SUBSTR('隔壁邻居:张三', INSTR('隔壁邻居:张三', ':', '1', '1') + 1) FROM dual;
--一步到位
--输出:张三
SELECT SUBSTR(SUBSTR('隔壁邻居:张三,年龄:18', 1, INSTR('隔壁邻居:张三,年龄:18', ',', '1', '1') - 1),
INSTR('隔壁邻居:张三,年龄:18', ':', '1', '1') + 1
)
FROM dual;