4、一起来看一个例子,假定有一个职工表(employee),对于一个职工的姓和名分成两列存放(FIRST_NAME和LAST_NAME),现在要查询一个叫比尔.克林顿(BillCliton)的职工。 下面是一个采用联接查询的SQL语句, select*fromemployee where first_name
9、面这种SQL语句的编写,Oracle系统就可以采用基于last_name创建的索引。 Select*fromemployee where first_name='Beill'andlast_name='Cliton'; 遇到下面这种情况又如何处理呢?如果一个变量(name)中存放着BillCliton这个员工的姓名,对于这种情况我们又如何避免全程遍历,使用索引呢? 可以使用一个函数,将变量name中的姓和名分开就可以了,但是有一点需要注意,这个函数是不能作用在索引列上。 下面是SQL查询脚本: select
10、*fromemployee where first_name=SUBSTR('&&name',1,INSTR('&&name','')-1) and last_name=SUBSTR('&&name',INSTR('&&name’,'')+1) 3.带通配符(%)的like语句 同样以上面的例子来看这种情况。目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。 可以采用如下的查询SQL语句: select*fromemployeewherelast_namelike'%cliton%';