ORACLE 字符截取

282 阅读1分钟

语法:SUBSTR(string,start, [length])

string:表示源字符串,即要截取的字符串。

start:开始位置,从1开始查找。如果start是负数,则从string字符串末尾开始算起。

length:可选项,表示截取字符串长度。

语法:INSTR(string,child_string,[start],[show_time])

string:表示源字符串。

child_string:子字符串,即要查找的字符串。

start:可选项,开始位置,默认从1开始。如果为负数,则从右向左检索。

show_time:可选项,表示子字符串第几次出现在源字符串当中,默认第1次,负数则报错。

现在需求是子合同号是流水号,要增加 就是每次查到最大的值然后++ 例如 : PV-EMO-20B8591-GC02 PV-EMO-2011123-GC05 1 想的是用max 因数据的关系会出现问题 2 用INSTR(字段名, 'GC', -1, 1) 截取出GC从右往左数第一次出现的位置 字段名称 3 select SUBSTR(字段名, INSTR(字段名, 'GC', -1, 1) 完整sql select max(T.n) from (select SUBSTR(字段名, INSTR(字段名, 'GC', -1, 1)) n from 表名 where is_enable = '1' and 字段名 like '%GC%') t