1、instr函数

instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0。

instr函数定义如下:

  1. /*
  2. * 返回子字符串在源字符串中的位置(字符串位置从1开始,而不是从0开始)
  3. * @param str 源字符串
  4. * @param substr 子字符串
  5. * @param position 检索位置,可省略(默认为1),参数为正时,从左向右检索,参数为负时,从右向左检索
  6. * @param occurrence 检索子串出现次数(即子串在源串第几次出现),可省略(默认为1),值只能为正整数,否则会报错
  7. * @return 返回子字符串在源字符串中出现的位置(没找到返回0)
  8. */
  9. instr(str, substr, position, occurrence);

例如:

  1. SELECT INSTR('hello world', 'l') FROM DUAL; --结果:3
  2. SELECT INSTR('hello world', 'l', 5) FROM DUAL; --结果:10 (从左向右第5位开始检索'l'在'hello world'中出现的位置)
  3. SELECT INSTR('hello world', 'l', -1) FROM DUAL; --结果:10 (从右向左第1位开始检索'l'在'hello world'中出现的位置)
  4. SELECT INSTR('hello world', 'l', 2, 2) FROM DUAL; --结果:4 (从左向右第2位开始检索'l'在'hello world'中第2次出现的位置)
  5. SELECT INSTR('hello world', 'l', -3, 3) FROM DUAL; --结果:0 (从右向左第3位开始检索'l'在'hello world'中第3次出现的位置)

2、like关键字

like关键字也可称为通配符,在SQL中用于模糊查询。可以使用“%”和“_”通配符,其中“%”代表0个或多个字符,“_”代表1个字符。
例如:

  1. SELECT * FROM STUDENTTAB WHERE STUNAME LIKE '%张%'; --在STUDENTTAB表中查询STUNAME中含有字符“张”的学员
  2. SELECT * FROM STUDENTTAB WHERE STUNAME LIKE '张_'; --在STUDENTTAB表中查询STUNAME中以“张”开头,名字长度为2的学员(即“张三”、“张四”,而不会检测出“张三三”)

3、instr和like的使用:

  1. SELECT * FROM STUDENTTAB WHERE STUNAME LIKE '%张%';
  2. 就相当于
  3. SELECT * FROM STUDENTTAB WHERE INSTR(STUNAME, '张') > 0;
  4.  
  5. SELECT * FROM STUDENTTAB WHERE STUNAME NOT LIKE '%张%';
  6. 就相当于
  7. SELECT * FROM STUDENTTAB WHERE INSTR(STUNAME, '张') = 0;
     
     
     

4、总结
<1> instr>0 和like、instr=0 和not like 一般来说查询的结果相同(不考虑特殊字符)
<2> instr是一个函数,可以建立函数索引,如果过滤的条件有索引,那么instr就可以提高性能。
<3> like查询时,以'%'开头,列所加的索引是不起作用的。
<4> 在没有索引的前提下,当数据量比较大时,instr要比like效率高。

instr和like的使用区别的更多相关文章

  1. SQL中instr和like的使用区别

    1.instr函数 instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0. instr函数定义如下: /* * 返回子 ...

  2. Oracle instr函数与SqlServer charindex的区别

    INSTR(C1,C2[,I[,J]]) [功能]在一个字符串中搜索指定的字符,返回发现指定的字符的位置; [说明]多字节符(汉字.全角符等),按1个字符计算 [参数] C1 被搜索的字符串      ...

  3. instrrev 和instr 区别vb

    Private Sub Form_click() Dim temp As String temp = "c:\window\system" Print Mid(temp, InSt ...

  4. [转]ORACLE中Like与Instr模糊查询性能大比拼

    instr(title,'手册')>0  相当于  title like '%手册%' instr(title,'手册')=1  相当于  title like '手册%' instr(titl ...

  5. Oracle date 和 timestamp 区别

    1.DATE数据类型 这个数据类型我们实在是太熟悉了,当我们需要表示日期和时间的话都会想到date类型.它可以存储月,年,日,世纪,时,分和秒.它典型地用来表示什么时候事情已经发生或将要发生.    ...

  6. having 子句与where区别

    having 子句,条件子句 与 where 功能.用法相同,执行时机不同. where 在开始时执行检测数据,对原数据进行过滤. having 对筛选出的结果再次进行过滤. having 字段必须是 ...

  7. PLSQL_基础系列08_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR(案例)

    2014-12-09 Created By BaoXinjian

  8. Oracle/Mysql/SqlServer函数区别

    mysql日期和时间格式转换 Linux scp 使用详解 Oracle/Mysql/SqlServer函数区别 2011-07-01 12:34:36|  分类: Mysql技术 |  标签:mys ...

  9. Mysql和Oracle的一些语法区别

    作为一个有追求的程序猿,当然要不断的学习,巴拉巴拉巴拉...好了,贴一个网址给大家,哈哈 MySQL与Oracle 差异比较:http://www.cnblogs.com/HondaHsu/p/364 ...

随机推荐

  1. h5获取地理坐标

    h5获取地理坐标 方法:h5自带获取地理信息的api api:navigator.geolocation.getCurrentPosition https://developer.mozilla.or ...

  2. Servlet实现图片读取显示

    1.导入jar包:commons-io-1.4.jar 2.index.jsp: <%@ page language="java" import="java.uti ...

  3. github安全整理

    漏洞及渗透练习平台: WebGoat漏洞练习平台: https://github.com/WebGoat/WebGoat webgoat-legacy漏洞练习平台: https://github.co ...

  4. Go语言——值方法 & 指针方法

    1 package main import ( "fmt" "sort" ) type SortableStrings []string type Sortab ...

  5. Python查看模块函数,查看函数方法的详细信息

    Python查看方法的详情 1.通用的帮助函数help() 使用help()函数来查看函数的帮助信息. 如: import requests help(requests) 会有类似如下输出: 2.查询 ...

  6. Web Api 创建及其使用

    由于创建博客,我需要尝试一些新的技术,新的思路,所以我没规规矩矩的写博客,用上了诸多以前没用的东西,比如现在这个(我只是听过web api 我连 web server 都只是用过两三次/手动滑稽) 昨 ...

  7. tensorflow实战笔记(18)----textCNN

    一.import 包 import os import pandas as pd import csv import time import datetime import numpy as np i ...

  8. ndk学习之C语言基础复习----结构体、共用体与C++开端

    自己实现sprintf功能: 关于C中的系统函数sprintf在上次[https://www.cnblogs.com/webor2006/p/7545627.html]学习中已经用到过了,这里再来回顾 ...

  9. css超链接

    超链接的代码<a href="http://www.divcss5.com/" target="_blank" title="关于div css ...

  10. Ubuntu死机解决方法汇总

    为什么不建议强制关机 如果长按电源按键强制关机,有可能损坏硬件或者丢失数据,甚至导致磁盘坏道! 其实, 大部分时候的死机是假死, 不是真死... 有时候鼠标还能动呢. 还有一个原因: 对于平时忠贞不二 ...