关于Oracle的instr和like

时间:2021-11-26 02:53:44

模糊查询:like、not like
语法:
满足模糊查询:字段 | 值 like 匹配标记。
不满足模糊查询:字段 | 值 not like 匹配标记。
如果现在想对某一列进行模糊查询,可以使用like子句完成,通过like可以进行关键字的模糊查询。在like子句中有两个通配符:

■ 百分号(%):可匹配任意类型和长度(可以匹配0位、一位或多位长度)的字符。
■ 下划线(_):匹配单个任意字符,常用来限制表达式的字符长度。

字符函数:instr
语法:instr( string1, string2, start_position,nth_appearance ) 。
翻译:instr(列 | 字符串,要查找的字符串,开始位置,出现位置)。
查找一个字符串是否在指定的位置上出现。
string1:源字符串,要在此字符串中查找。
string2:要在string1中查找的字符串 。
start_position:代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
注意:
  位置索引号从1开始。
  如果String2在String1中没有找到,instr函数返回0。
  示例:
  SELECT instr(‘syranmo’,’s’) FROM dual; – 返回 1
  SELECT instr(‘syranmo’,’ra’) FROM dual; – 返回 3
  SELECT instr(‘syran mo’,’at’,1,2) FROM dual; – 返回 0


其实instr也可以进行模糊查询

SELECT * FROM 表 WHERE 列 LIKE ‘%XX%’;
等同于
SELECT * FROM 表 WHERE instr(列,’XX’) > 0;

SELECT * FROM 表 WHERE 列 not LIKE ‘%XX%’;
等同于
SELECT * FROM 表 WHERE instr(列,’XX’) = 0;

性能的话,推荐看
http://www.blogjava.net/rabbit/archive/2013/01/21/394510.html