日期:2014-05-17  浏览次数:20815 次

截取
应急设备(危险品运输训练合格证)-02

乘务员初始训练培训证书-01

怎么写截取语句 ,得到 “应急设备(危险品运输训练合格证)" ,也就是得到-之前的数据、

------解决方案--------------------
SQL code
select regexp_substr('乘务员初始训练培训证书-01', '[^-]+', 1, 1) from dual;

------解决方案--------------------
截取有几种方式 可以通过调用正则来截取字符串 
oracle正则表达式从10G开始支持
内置了四个函数 REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、REGEXP_REPLACE
 
REGEXP_SUBSTR与SUBSTR函数相同,返回截取的子字符串
REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]])
------解决方案--------------------
SQL code

select substr('应急设备(危险品运输训练合格证)-02',1,instr('应急设备(危险品运输训练合格证)-02','-')-1) from dual;

------解决方案--------------------
SQL code

SELECT SUBSTR('应急设备(危险品运输训练合格证)-02',1,INSTR('应急设备(危险品运输训练合格证)-02','-',1,1)-1) FROM dual

------解决方案--------------------
实测成功