Oracle常用字符串操作

参考:

一、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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值