MySQL数据表中带LIKE的字符匹配查询

2014年07月15日09:56    百科369


MySQL数据表中带LIKE的字符匹配查询

LIKE关键字可以匹配字符串是否相等。

  • 如果字段的值与指定的字符串相匹配,则符合查询条件,该记录将被查询出来。
  • 如果与指定的字符串不匹配,则不符合查询条件。

基本的语法格式如下:

[NOT] LIKE '字符串'

NOT:可选。加上NOT表示与指定的字符串不匹配时满足条件。

字符串:指定用于匹配的字符串,该字符串必须加单引号或者双引号。

“字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配符。

注意%和_的区别:

  • “%”表示任意长度的字符串,长度可以为0。例如,g%gle表示以字母g开头,以字母gle结尾的任意长度的字符串。g%gle可以表示ggle、gogle、gfgle、google、gusgle、gooooogle等。
  • “_”只能表示单个字符。例如,g_gle表示以字母g开头,以字母gle结尾的5个字符。中间的“_”可以表示任意一个字符。g_gle可以表示gagle、gbgle、gcgle、gdgle或gogle等。

实例1

使用LIKE关键字匹配一个完整的字符串'Tom'。SELECT语句的代码如下:

SELECT * FROM employee WHERE  name LIKE 'Tom';

在DOS提示符窗口中查看使用LIKE关键字匹配一个完整的字符串'Tom'的操作效果。如下图所示:

上图中代码执行的结果显示,name字段中取值为Tom的记录被查询了出来。其它不符合条件的记录都被过滤掉了。

在这里,LIKE与等于号(=)是等价的。如果修改为“=”,查询结果是一样的。如下图所示:

但是,上面的情况只对匹配一个完整的字符串有效,如果字符串中包含了通配符,就不能这样进行替换了。


实例2

使用LIKE关键字匹配带有通配符“%”的字符串'河南%'。SELECT语句的代码如下:

SELECT * FROM employee WHERE homeaddress LIKE '河南%';

在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“%”的字符串'河南%'的操作效果。如下图所示:

上图中代码执行的结果显示,homeaddress字段以“河南”开头的记录都被查询出来了。

如果使用“=”替换LIKE时,则查询结果为空记录。如下图所示:

上图中代码执行的结果显示,没有查询出任何记录。这说明字符串中包含了通配符时,“=”就不能代替LIKE了。


实例3

使用LIKE关键字匹配带有通配符“_”的字符串'T_m'。SELECT语句的代码如下:

SELECT * FROM employee WHERE name LIKE 'T_m';

在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“_”的字符串'T_m'的操作效果。如下图所示:

上图中代码执行的结果显示,name字段中取值为Tom的记录被查询出来了。

“_”只能代表一个字符。如果字符串为“T_”,将不能查询出结果。如下图所示:

上图中代码执行的结果显示,没有查询出任何记录。因为name字段中不存在以“T”开头,长度为2的记录。

提示

需要匹配的字符串需要加引号,可以是单引号,也可以是双引号。在MySQL 5.6.19版本中,使用一个“_”符号也可以代表一个汉字。如下图所示:

如果使用一个“_”符号代表一个汉字时,不能正确查询出记录,则可以使用两个“_” 符号来代表一个汉字,再查询一下试试。毕竟,一般情况下,一个汉字是两个字符,它需要两个“_”符号来代表一个汉字。

使用LIKE关键字匹配带有通配符“_”的字符串'_雪_'。SELECT语句的代码如下:

SELECT * FROM employee WHERE name LIKE '_雪_';

在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“_”的字符串'_雪_'的操作效果。如下图所示:

上图中代码执行的结果显示,name字段中,中间一个汉字为“雪”的三个汉字的名字被查询了出来。

NOT LIKE表示字符串不匹配的情况下符合条件。


实例4

使用NOT LIKE关键字查询不是姓刘的所有人的记录。SELECT语句的代码如下:

SELECT * FROM employee WHERE name NOT LIKE "刘%";

在DOS提示符窗口中查看使用NOT LIKE关键字查询不是姓刘的所有人的记录的操作效果。如下图所示:

上图中代码执行的结果显示,name字段中取值为“刘兵”的记录被排除出去了。


实例5

使用LIKE关键字匹配带有通配符“%”的字符串'%军'。SELECT语句的代码如下:

SELECT * FROM employee WHERE name LIKE '%军';

在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“%”的字符串'%军'的操作效果。如下图所示:

上图中代码执行的结果显示,name字段中最后一个字为“军”的所有人的记录被查询了出来。


实例6

使用LIKE关键字匹配带有通配符“%”的字符串'%雪%'。SELECT语句的代码如下:

SELECT * FROM employee WHERE name LIKE '%雪%';

在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“%”的字符串'%雪%'的操作效果。如下图所示:

上图中代码执行的结果显示,name字段中,中间任意位置为“雪”的人的名字的记录都被查询了出来。


提示

使用LIKE和NOT LIKE关键字可以很好匹配字符串。而且,可以使用“%”和“_”等通配符来简化查询。

(转)MySQL数据表中带LIKE的字符匹配查询的更多相关文章

  1. mysql进阶(五)数据表中带OR的多条件查询

    MySQL数据表中带OR的多条件查询 OR关键字可以联合多个条件进行查询.使用OR关键字时: 条件 1) 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 2) 如果不符合这些查询条件 ...

  2. 向mysql数据表中插入数据失败的原因

    1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...

  3. 删除Mysql数据表中多余的重复记录的sql语句

    数据表 sniper_tb 中存在主键 id,字段url,现需要在url字段上添加 unique,但由于url存在重复记录,导致添加失败. 如何删除表中多余的url重复记录,仅保持一条? 思路一 将 ...

  4. MySQL 修改数据表中的字段的字符编码

    1.查询 MySQL 的版本: SELECT VERSION(); 2.查询 MySQL 当前使用的字符集: SHOW VARIABLES LIKE '%character%'; 3.查询指定数据库的 ...

  5. mysql 数据表中查找、删除重复记录

    为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having ...

  6. 【转】MySQL数据表中记录不存在则插入,存在则更新

    mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...

  7. 从mysql数据表中随机取出一条记录

    核心查找数据表代码: ; //此处的1就是取出数据的条数 但这样取数据网上有人说效率非常差的,那么要如何改进呢 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. S ...

  8. jnhs中国省市县区mysql数据表不带gps坐标

    1.查省 SELECT * FROM china WHERE china.Pid=0 2.查市 SELECT * FROM chinaWHERE china.Pid=330000 3.查区 SELEC ...

  9. MySQL数据表中内容大小写区分的设置

    MYSQL在默认的情况下查询是不区分大小写的,例如:    ? 1 2 3 4 5 6 7 mysql> create table t1( -> name varchar(10)); Qu ...

随机推荐

  1. uvalive 3890 Most Distant Point from the Sea

    题意:求一个凸多边形中一点到边的最大距离. 思路:转换成在多边形内部,到每边距离为d的直线所围成的内多边形是否存在.也就是,二分距离+半平面交. #include<cstdio> #inc ...

  2. jqgrid 中设置列不排序

    背景 今天在做系统的功能时,当时有这么个需求:在添加了一行数据时,原本的排序的自动就不能再排序,也就是排序失效. 1. 使用onSortCol事件禁止排序列 当时使用了初始化时,使用onSortCol ...

  3. hdu4587-TWO NODES(割点)

    #include <bits/stdc++.h> using namespace std; ; ; struct Edge { int to, next; } edge[M]; int h ...

  4. 教程-Delphi各版本与工具下载地址

    1.Delphi 7.0 下载地址:http://www.skycn.com/soft/2121.html 注册码:(正在用的没有问题)V8S3-KM82KQ-XN8JQK-EPS33EA-GZK汉化 ...

  5. Codeforces Wilbur and Array

    Description Wilbur the pig is tinkering with arrays again. He has the array a1, a2, ..., an initiall ...

  6. Keil MDK 无法设置断点【worldsing】

    要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过: 同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果:   1.keil 不能设置断点,每 ...

  7. Tomcat服务器配置文件uri编码设置

    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" ...

  8. Spring Data JAP 多个不是必填的查询条件处理

    简单的介绍一下使用场景,DAO层用Spring Data实现,dao 只有接口,实现类是容器启动时动态字节码生成,接口里定义方法,方法上@Query 里写JPQL查询语句. 基于以上的限制,如果对一个 ...

  9. Swift基本语法及与OC比较之二

    //MARK:-----------------控制流----------------- //MARK: 1.for - in 循环 ,不用声明Value类型 //for value in 1...6 ...

  10. .Net Core静态文件中间件StaticFiles的使用

    以前,当我们的网站需要显示图片的时候,直接在网站目录下新建文件夹,把图片放在这个文件夹下,然后通过文件夹的路径就可以访问到. 但是在.net core中不可以这样,要通过中间件StaticFiles配 ...