(转)MySQL数据表中带LIKE的字符匹配查询
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的字符匹配查询的更多相关文章
- mysql进阶(五)数据表中带OR的多条件查询
MySQL数据表中带OR的多条件查询 OR关键字可以联合多个条件进行查询.使用OR关键字时: 条件 1) 只要符合这几个查询条件的其中一个条件,这样的记录就会被查询出来. 2) 如果不符合这些查询条件 ...
- 向mysql数据表中插入数据失败的原因
1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...
- 删除Mysql数据表中多余的重复记录的sql语句
数据表 sniper_tb 中存在主键 id,字段url,现需要在url字段上添加 unique,但由于url存在重复记录,导致添加失败. 如何删除表中多余的url重复记录,仅保持一条? 思路一 将 ...
- MySQL 修改数据表中的字段的字符编码
1.查询 MySQL 的版本: SELECT VERSION(); 2.查询 MySQL 当前使用的字符集: SHOW VARIABLES LIKE '%character%'; 3.查询指定数据库的 ...
- mysql 数据表中查找、删除重复记录
为了性能考虑,在阅读之前提醒大家,如果有子查询,子查询查询到的数据最好不要超过总数据量的30%. 查询有重复数据的记录 select * from F group by a,b,c,d having ...
- 【转】MySQL数据表中记录不存在则插入,存在则更新
mysql 记录不存在时插入在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的就是这个问 ...
- 从mysql数据表中随机取出一条记录
核心查找数据表代码: ; //此处的1就是取出数据的条数 但这样取数据网上有人说效率非常差的,那么要如何改进呢 搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据. S ...
- jnhs中国省市县区mysql数据表不带gps坐标
1.查省 SELECT * FROM china WHERE china.Pid=0 2.查市 SELECT * FROM chinaWHERE china.Pid=330000 3.查区 SELEC ...
- MySQL数据表中内容大小写区分的设置
MYSQL在默认的情况下查询是不区分大小写的,例如: ? 1 2 3 4 5 6 7 mysql> create table t1( -> name varchar(10)); Qu ...
随机推荐
- ThinkPHP中SQL调试方法
$admin = D('Admin'); $info = $admin->field('`lastlogintime`,`lastloginip`')->where(array('user ...
- 【转载】shell中的特殊变量$
shell中的特殊变量:变量名含义$0shell或shell脚本的名字$*以一对双引号给出参数列表$@将各个参数分别加双引号返回$#参数的个数$_代表上一个命令的最后一个参数$$代表所在命令的PID$ ...
- 自编译安装nginx
1. 下载nginx,并解压 http://nginx.org/ 2. 下载health check模块 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 1 ...
- hdu4812-D Tree (树的点分治)
昨天学了下树分治,今天补这道题,还是太不熟练了,写完之后一直超时.后来查出好多错= =比如v,u写倒了,比如+写成了取最值,比如....爆int...查了两个多小时的错..哭...(没想到进首页了 h ...
- 教程-Supports判断接口(Instance)是否支持
function TCommandEnabledController.GetCommandVisible(const ACommandName: string): Boolean; var I: In ...
- void类型及void指针
1.概述 许多初学者对C/C 语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2 ...
- STL学习系列一:STL(标准模板库)理论基础
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广 ...
- Spider Studio 数据挖掘集成开发环境
(最新版本: 2.7.12.1) 传统的多线程蜘蛛程序虽然采集速度快, 但是明明不需要所有内容, 却胡子眉毛一把抓, 将整个网页都下载下来当作一个文本进行处理. 由于网页内容参差不齐, 所以抓取质量常 ...
- 【C++深入浅出】智能指针之auto_ptr学习
起: C++98标准加入auto_ptr,即智能指针,C++11加入shared_ptr和weak_ptr两种智能指针,先从auto_ptr的定义学习一下auto_ptr的用法. template& ...
- 基于EF创建数据库迁移
通过创建的实体类和DbContext类利用EF的Code First数据库迁移创建数据库. 下面看代码. 一.先创建实体类 我先添加一个BaseEntity,里面就一个属性 [Key] public ...