Mysql| 使用通配符进行模糊查询详解(like,%,_)
作者:YvesHe 发布时间:2024-01-15 08:17:40
通配符的分类:
%百分号通配符: 表示任何字符出现任意次数 (可以是0次).
_下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.
like操作符:
LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较.
注意: 如果在使用like操作符时,后面的没有使用通用匹配符效果是和=一致的,SELECT * FROM products WHERE products.prod_name like '1000';只能匹配的结果为1000,而不能匹配像JetPack 1000这样的结果.
1)%通配符使用:
匹配以"yves"开头的记录:(包括记录"yves")
SELECT * FROM products WHERE products.prod_name like 'yves%';
匹配包含"yves"的记录(包括记录"yves")
SELECT * FROM products WHERE products.prod_name like '%yves%';
匹配以"yves"结尾的记录(包括记录"yves",不包括记录"yves ",也就是yves后面有空格的记录,这里需要注意)
SELECT * FROM products WHERE products.prod_name like '%yves';
2)_通配符使用:
SELECT * FROM products WHERE products.prod_name like '_yves';
匹配结果为: 像"yyves"这样记录.
SELECT * FROM products WHERE products.prod_name like 'yves__';
匹配结果为: 像"yvesHe"这样的记录.(一个下划线只能匹配一个字符,不能多也不能少)
注意事项:
注意大小写,在使用模糊匹配时,也就是匹配文本时,mysql是可能区分大小的,也可能是不区分大小写的,这个结果是取决于用户对MySQL的配置方式.如果是区分大小写,那么像YvesHe这样记录是不能被"yves__"这样的匹配条件匹配的.
注意尾部空格,"%yves"是不能匹配"heyves "这样的记录的.
注意NULL,%通配符可以匹配任意字符,但是不能匹配NULL,也就是说SELECT * FROM products WHERE products.prod_name like '%';是匹配不到products.prod_name为NULL的的记录.
技巧与建议:
正如所见, MySQL的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。这里给出一些使用通配符要记住的技巧。
不要过度使用通配符。如果其他操作符能达到相同的目的,应该 使用其他操作符。
在确实需要使用通配符时,除非绝对有必要,否则不要把它们用 在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起 来是最慢的。
仔细注意通配符的位置。如果放错地方,可能不会返回想要的数.
补充知识:MySQL LIKE模糊查询 % _ 通配符会查询出所有数据
最近写了一批分页查询 测试查询出用 _ % 这两个特殊字符会查询出所有数据 查询条件不起作用 结果不是测试想要的
后来发现这两个特殊字符在sql like查询 中是通配符 可以代表任意字符
最后想出了2种解决方案
1. 转义 这两个特殊字符 就可以实现
2.使用内部函数INSTR,代替传统的LIKE方式查询,并且速度更快。
INSTR()函数返回字符串中子字符串第一次出现的位置。如果在str中找不到子字符串,则INSTR()函数返回零(0)。
下面说明了INSTR函数的语法。
select * from user where INSTR(name,'小明');
来源:https://blog.csdn.net/u011479200/article/details/78513632
猜你喜欢
- 前言本文从单元测试实践角度出发,提升对代码质量的意识。本文内容主要包括:单元测试、Mock测试、基准测试。测试测试可以提高代码的质量、减少事
- Ajax在网上已经叫喊了好几年了, 但是还是有很多像我这样的新手没掌握它, 像这样能改善交互体验的技术不会用真是很遗憾呢. 所以我就把我学到
- 本文实例为大家分享了vuex实现购物车功能的具体代码,供大家参考,具体内容如下先看效果:代码:<template> <di
- 前言我们知道当文件不存在的时候,open()方法的写模式与追加模式都会新建文件,但是对文件进行判断的场景还有很多,比如,在爬虫下载图片的时候
- 如下所示:def softmax(logits, axis=None, name=None, dim=None): ""
- 这是一款非常轻量级的纯原生JS的瀑布流插件——Macy.js,如今图片和视频网站非常多,非常适应瀑布流这样的布局方式来呈现给用户。这款流布局
- python读取Excel表格文件,例如获取这个文件的数据python读取Excel表格文件,需要如下步骤:1、安装Excel读取数据的库-
- 具体代码如下所示:<!DOCTYPE html><html> <head> &
- 然后我们在Interactive Python prompt中测试了一下:>>> import subprocess &n
- --相信大家肯定经常会把数据导入到数据库中,但是可能会有些记录行的所有列的数据是null,这为null的数据是我们不需要 --现在需要一个简
- 1. Numpy(Numberical Python)Anaconda中已经集成了NumPy,可以直接使用。如果想要自行安装的话,可以使用流
- 简单展示如何利用python中的pandas库创建、读取、修改CSV数据文件1 写入CSV文件import numpy as npimpor
- 哥德巴赫猜想:大于8的偶数之和都可以被两个素数相加范围 8 - 10000思路:首先不要去管需要什么什么东西实现,所以我们如果知道如何去完成
- 这篇文章主要介绍了Python变量作用域LEGB用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 解决办法:1.Goland--->Preferences...--->Go--->GOPATH--->Project
- 众所周知,vue可以用来开发移动端app,可以使用hbuilder将build好的vue打包成一个移动端app,但是用过之后就会发现,使用c
- golang中list包用法可以参看这篇文章但是list包中大部分对于e *Element进行操作的元素都可能会导致程序崩溃,其根本原因是e
- 前言最近因为工作的原因,在使用SSM框架实现一个商品信息展示的功能,商品的数据较多,不免用到分页,查了一番MyBatis分页的做法,终于是实
- 这里分析了php的简单防盗链实现方法。分享飞大家供大家参考。具体如下:index.php页面如下:<html><head&
- 本文介绍使用python+pyqt5开发桌面程序的一个可视化UI视图布局一、环境包的安装1、如果还不知道虚拟环境的可以参考,或者直接使用pi