LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

基本语法
一:% 表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示
1.从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:
SELECT * FROM Persons WHERE City LIKE ‘N%’
2.从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:
SELECT * FROM Persons WHERE City LIKE ‘%g’
3.从 “Persons” 表中选取居住在包含 “lon” 的城市里的人:
SELECT * FROM Persons WHERE City LIKE ‘%lon%’
4.从 “Persons” 表中选取居住在不包含 “lon” 的城市里的人:
SELECT * FROM Persons WHERE City NOT LIKE ‘%lon%’
二 :_ 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
例如 SELECT * FROM [user] WHERE u_name LIKE ‘
只找出“唐三藏”,这样u_name为三个字且中间一个字是“三”的;
三:[ ] 表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
例如 SELECT * FROM [user] WHERE u_name LIKE ‘[张李王]三’
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
四:[^ ] 表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
例如 SELECT * FROM [user] WHERE u_name LIKE ‘[^张李王]三’
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
五、查询内容包含通配符时

  • 表示查找的是所有信息,例如select * from tbl_user

由于通配符的缘故,导致我们查询特殊字符“%”、“”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:
function sqlencode(str)
str=replace(str,"[","[[]") '此句一定要在最前
str=replace(str,"
","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function

备注:
在查询前将待查字符串先经该函数处理即可,并且在网页上连接数据库用到这类的查询语句时侯要注意:
例如 Select * FROM user Where name LIKE ‘老[^1-4]’

上面 《’》老[^1-4]《’》是要有单引号的!

优化

SELECT * FROM component_data WHERE creation_date LIKE ‘2012%’;(索引起作用)
优于
SELECT * FROM component_data WHERE creation_date LIKE ‘%2012%’;(索引不起作用)

instr()和like

函数的格式 (俗称:字符查找函数)
格式一:instr( string1, string2 ) / instr(源字符串, 目标字符串)
select instr(‘helloworld’,‘lo’) from dual; --返回结果:4 即:在“lo”中,“l”开始出现的位置

格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) / instr(源字符串, 目标字符串, 起始位置, 匹配序号)
解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。
select instr(‘helloworld’,‘l’,3,2) from dual; --返回结果:4 也就是说:在"helloworld"的第3(l)号位置开始,查找第二次出现的“l”的位置

select id, name from users where instr(id, ‘101’) > 0;
效果等价于
select id, name from users where id like ‘%101%’
效率
select * from gt_alarm where alarm_date like ‘%2016/4/3%’; --11s
select * from gt_alarm where instr(alarm_date,‘2016/4/3’)>0; --9s
时间上的差异很明显,INSTR在一瞬间执行完成,因为这个是查找的字段,而非走全表扫描,看来,oracle 内部函数效率还是高些。

关于sql中like操作符的使用及效率优化问题整理相关推荐

  1. DataView.RowFilter的使用(包括in,like等SQL中的操作符)

    DataView RowFilter Syntax [C#] This example describes syntax of DataView.RowFil­ter expression. It s ...

  2. sql 中or与in的查询效率对比

    原文链接:http://blog.chinaunix.net/uid-20639775-id-3416737.html 在网上一直看到的是or和in的效率没啥区别,一直也感觉是这样,前几天刚好在看&l ...

  3. BeanCopy和BeanCopier在实际开发中的使用(属性copy效率优化)

    优化场景: 项目的实体类主要分为三种:dto.dao.query等,所以属性copy避免不了,是影响代码执行效率的主要方面之一. 当时的情况是,项目A接受url请求,然后会调用项目B的一个接口去处理明 ...

  4. SQL中IN和OR效率对比

    测试结果如下: 第一种情况,ID列为主键的情况,4组测试执行计划一样,执行的时间也基本没有区别. A组or和in的执行时间: or的执行时间为:0.002s     in的执行时间为:0.002s B ...

  5. SQL中 UNION 和 UNION ALL 操作符小结

    SQL中 UNION 和 UNION ALL 操作符小结1.UNION 和 UNION ALL 操作符用于合并两个或多个 SELECT 语句的结果集[适用场景] 2.UNION 和 UNION ALL ...

  6. oracle 赋值表数据类型,PL/SQL数据类型及操作符

    标量(scalar)数据类型 标量(scalar)数据类型没有内部组件,他们大致可分为以下四类: . number . character . date/time . boolean 表1显示了数字数 ...

  7. mysql操作符_MySql 中的=操作符

    今天在学习数据库的索引优化时,关于memory存储引擎的的hash索引时,看到了操作符<=> ,这个操作符还是第一次见到,于是上网查了一下.我想大家应该知道 =  !=   <> ...

  8. SQL中使用的运算符号详解

    文章目录 前言 1. 算术运算符 加法与减法运算符 乘法与除法运算符 求模(求余)运算符 2. 比较运算符 1.等号运算符 2.安全等于运算符 3.不等于运算符 4. 空运算符 5. 非空运算符 6. ...

  9. 数据库查询语句SQL中like、%、-的区别

    数据库查询语句SQL中like.%.-的区别 数据库查询语句SQL中like.%.-的区别 %百分号通配符:表示任何字符出现任意次数(可以是0次) SQL 语句选取 name 以字母 "k& ...

最新文章

  1. [命令技巧]chmod Set-User-ID Set-Group-ID
  2. MySQL编译安装及主从配置
  3. 网页中显示flash的时候部分显示红色叉好,而有的能够正常显示
  4. Kafka概念入门(一)
  5. [译]管理IIS日志的存储
  6. linux修改文件内容_详解5种实用方法---Linux系统清空或删除大文件内容
  7. TensorFlow 加载多个模型的方法
  8. Python中的TCP的客户端UDP学习----第一篇博客
  9. python支持哪些平台开发_【后端开发】python能兼容哪些平台
  10. 【尚硅谷】JavaScript基础实战丨JS入门到精通_01-06
  11. DB2 执行SQL报错: DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048
  12. 玩转iOS开发:iOS 8新特性《Share Extension》
  13. 【游戏开发】小白学Lua(上)
  14. java自学-常见的API(String、ArryList)
  15. 【Linux 】内核签名(签名内核模块)、linux 驱动签名、安装特定版本的 kernel-devel...
  16. 数字化转型导师坚鹏:数字化时代企业管理变革与创新营销
  17. 信息学奥赛一本通——1004:字符三角形
  18. 14个PPT资源素材网站,再也不怕做PPT了
  19. 网页中插入FLASH(swf文件)的html代码
  20. 【单片机学习】独立按键的扩展应用

热门文章

  1. 华为软件测试实习生面试
  2. eChats折线图更新数据不自然,要闪一下,动态数据解决
  3. 批量重命名,文件夹重命名的五种方式分享
  4. 让你高效工作的7大工具类网站
  5. 猿人学之js混淆源码乱码
  6. 什么是NFT?你不会还不知道吧!
  7. 溢米辅导完成C轮1500万美元融资,将用于教研、产品以及技术三大领域
  8. MySQL攻略(2)
  9. 3dsmax uvw展开
  10. 去哪儿12306候补购票怎么用?