http://www.lmwlove.com/ac/ID878

有很多朋友写了几年的like搜索,可能对like后面通配符的用法都不了解,甚至于%的作用是什么都不清楚。在这篇文章中,我们就一起来学习一下like查询中通配符的用法吧。

我们写的最多的查询语句可能是这样的

select * from computes where 字段 name '%sql技术%'

那么,上面sql语句中的%是起什么作用呢?

%,sql中查询通配符,它匹配包含零个或多个字符的任意字符串
比如上面sql的意思就是查询出name中包含'sql技术'的所有记录。 
因为%匹配零个或者多个字符。我们可以只使用一个%来查询只是开始或结尾处包含'sql技术'的所有记录,分别如下:
1,查询所有name字段以sql技术开头的记录。

select * from computes where 字段 name 'sql技术%'

2,查询所有name字段以sql技术结尾的记录。

select * from computes where 字段 name '%sql技术'

除了%外,可能我们有忽略掉sql中另一个通配符了,它就是下划线'_'。

_,匹配sql中任何单个字符
比如下面的sql

select * from hr_staff where name like '_bcd'

那么它将返回所有name长度为4,且以'bcd'结尾的所有记录,比如abcd,ebcd都会满足查询条件,但aebcd就不满足了,因为_是匹配单个字符。

有了匹配单个与多个字符的方法了,那么有没有匹配指定范围内字符的写法呢?这个当然也是有的。就是使用范围符中括号'[]'了。

[],指定[]内标识范围或集合中的任何单个字符
比如,看下面的sql的写法:
1,返回name字段以a或者b或者c开头的所有记录

select * from hr_staff where name like '[a,b,c]%'

2,返回name字段以a或者b或者c结尾的所有记录

select * from hr_staff where name like '%[a,b,c]'

[]中集合还有一种写法,就是以-来表示从某字符开始,到某字符结束。比如下面的sql语句

select * from hr_staff where name like '[a-c]%'

它表示查询hr_staff表中name字段所有从a开始,到c结束开头的记录,它的作用与select * from hr_staff where name like '[a,b,c]%'是一样的。还有[0-9]表示匹配从0到9中的任意数字。

有了在范围内的写法,对应就会有不在范围内的写法:

[^],表示不属于[]指定范围或集合的任何单个字符
比如:[^0-9]表示不匹配任何数字。
示例:我们要查询表table1的col1列全为数字的记录,sql语句可以这样写:

select * from table1 where col1 not like '%[^0-9]%'

好了,看完这篇文章后,有没有觉的对sql的查询又有了新的了解呢,呵呵,欢迎大家一起讨论。

sql搜索like通配符的用法详解的更多相关文章

  1. SQL之case when then用法详解

    case具有两种格式.简单case函数和case搜索函数. <span style="font-size:14px;">--简单case函数 case sex when ...

  2. SQL Server UPDATE语句的用法详解

    SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...

  3. SQL中CONVERT()函数用法详解

    SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft® SQL Server ...

  4. Elasticsearch SQL用法详解

    Elasticsearch SQL用法详解  mp.weixin.qq.com 本文详细介绍了不同版本中Elasticsearch SQL的使用方法,总结了实际中常用的方法和操作,并给出了几个具体例子 ...

  5. mysql中event的用法详解

    一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...

  6. oracle正则表达式regexp_like的用法详解

    oracle正则表达式regexp_like的用法详解 /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与IN ...

  7. Word中类似正则匹配的查找替换通配符的使用详解

    一.Word查找栏代码&通配符一览表 序号 清除使用通配符复选框 勾选使用通配符复选框 特殊字符 代码 特殊字符 代码or通配符 1 任意单个字符 ^? 任意单个字符 ? 2 任意数字 ^# ...

  8. grep用法详解:grep与正则表达式【转】

    转自:http://blog.csdn.net/hellochenlian/article/details/34088179 grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配 ...

  9. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

随机推荐

  1. Redis 64 steps

    a memo for redis 64 operations start server in console: 1. D:\>cd redis64 2. D:\redis64>redis- ...

  2. spring @value 注入static

    import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Com ...

  3. android APK 文件的生成过程

    步骤: 1. 用 aapt工具生成R文件aapt  package  -m -J  gen目录 -M AndroidManifest.xml  -S res目录  -I 编译版本sdk的android ...

  4. C#动态webservice调用接口 (JAVA,C#)

    C#动态webservice调用接口 using System; using System.Collections; using System.IO; using System.Net; using ...

  5. 常用Java排序算法

    常用Java排序算法 冒泡排序 .选择排序.快速排序 package com.javaee.corejava; public class DataSort { public DataSort() { ...

  6. Join two DataTables in C#

    var query = (from x in a.AsEnumerable() join y in b.AsEnumerable() on x.Field<int>("col1& ...

  7. STM32串口

    状态寄存器USART_SR的复位值为0x00C0H:即 第七位发送寄存器空TXE=1和第六位发送完成TC=1寄存器为空, TC=1表明发送已完成.此时只要使能了发送空和发送完成中断就可进入中断ISR( ...

  8. 简单了解undo

    ORACLE 数据库 DML语句执行之前,会将数据块修改前的信息 镜像保存到 undo 段 insert语句     rollback    将会执行一条deleter操作  (相对数据量最小,只需利 ...

  9. 关于Android 打开新的Activity 虚拟键盘的弹出与不弹出

    关于Android 打开新的Activity 虚拟键盘的弹出与不弹出 打开Activity 时  在相应的情况 弹出虚拟键盘 或者 隐藏虚拟键盘 会给用户非常好的用户体验 , 实现起来也比较简单 只需 ...

  10. 转 makefile

    转自http://blog.chinaunix.net/uid-21411227-id-1826747.html gcc是gnu旗舰产品,目前基本上就是和unix捆绑在一起分发的.这个东西功能强大,但 ...