如何用oracle 截取两个相同字符串之间的字符
展开全部
select substr(列名,
regexp_instr(列名,'-',1),
(regexp_instr(列名,'-',1,2)-regexp_instr(列名,'-',1,2))
) from 表明
substr(列名,位置1,位置2)意思是截取列名,从位置1开始,截取位置2 为
例如 select substr('410000',1,2) 就是从第一位开始,截取两位,返回的就是41
regexp_instr(列名,'-',1,1)是返回列名第一个'-'的位置,第一个1表示开始位置,可以缺省,默认为从头开始,第二个1表示第一次出现的意思,可缺省
regexp_instr(列名,'-',1,2)是返回列名第二个'-'的位置,1表示开始位置,在这里不能缺省,因为2表示的是第二次出现的意思,如果缺省的话,意思就不对了
regexp_instr(列名,'-',1),
(regexp_instr(列名,'-',1,2)-regexp_instr(列名,'-',1,2))
) from 表明
substr(列名,位置1,位置2)意思是截取列名,从位置1开始,截取位置2 为
例如 select substr('410000',1,2) 就是从第一位开始,截取两位,返回的就是41
regexp_instr(列名,'-',1,1)是返回列名第一个'-'的位置,第一个1表示开始位置,可以缺省,默认为从头开始,第二个1表示第一次出现的意思,可缺省
regexp_instr(列名,'-',1,2)是返回列名第二个'-'的位置,1表示开始位置,在这里不能缺省,因为2表示的是第二次出现的意思,如果缺省的话,意思就不对了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询