Oracle中的INSTR增强方法
在使用oracle数据库的查询中,我们都会碰到多字段的查询条件,有like的模糊匹配,有in的过滤,有instr的筛选。现在有两个字符串valA(a,b,c,d)、字符串valB(2,3,b)现在需要匹配B字符串中有没有数据在A中出现,如果有就标识条件成立。如果有上面这么一个情况以上的方式就难以处理了,我们一贯的做法市采用多个OR来拼接查询条件。在使用拼接查询条件过程中往往需要在编程代码或者在数据库服务器上拼接SQL,这样往往让代码的可读性变得很差。那我们今天就说说如何实现。
- Oracle自定义方法的使用场景
- 实现instr增强的方法
- 使用示例
Oracle自定义方法使用场景
在编程的路上,我们都会遇到oracle的各种存储过程,视图,方法,触发器……这些所有的oracle提供的对象,我们较常用的是存储过程和视图。
在oracle中存储和函数都能支持输入和输出,为什么我们工作中实际用到的更多的是存储过程而不是函数呢?因为我们往往要返回大量的查询数据,但是函数只能支持一个参数的放回,而且在编写函数的时候使用代码掉用也不容易理解。那什么情况下我们需要使用函数呢?
我的理解如下,当你只有一个返回值(而且非游标数据类型)或者需要做为select语句的表达式进行执行的时候就可以考虑采用函数。第一种情况很好理解,第二种情况的意思就是当你要写一个辅助的逻辑(非业务逻辑)的计算,这个辅助可能在其他很多地方都可以重复利用更业务无关的时候就可以考虑使用自定义函数,我们现在要做的是instr的增强,就是辅助计算,所以采用了自定义方法来实现。
实现instr增强的方法
在使用instr的时候我们其实是使用了类似indexOf的操