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

标签:Mysql,通配符,模糊查询
0
投稿

猜你喜欢

  • 关于反爬虫的一些简单总结

    2022-09-21 18:38:59
  • Python descriptor(描述符)的实现

    2021-12-22 09:07:56
  • where条件顺序不同、性能不同示例探讨

    2024-01-16 19:59:38
  • python实现微信自动回复机器人功能

    2023-12-30 01:01:40
  • 在Python的Bottle框架中使用微信API的示例

    2022-06-02 00:12:47
  • python 2.6.6升级到python 2.7.x版本的方法

    2022-09-25 15:07:45
  • 框架和框架之间的关系

    2008-01-17 18:54:00
  • Python画图练习案例分享

    2021-06-25 14:48:07
  • python爬虫scrapy框架之增量式爬虫的示例代码

    2023-05-06 00:22:40
  • python开发之文件操作用法实例

    2022-08-07 02:03:45
  • Python中jieba库的介绍与使用

    2021-05-09 11:45:55
  • Python的Pillow库进行图像文件处理(图文详解)

    2023-10-04 04:02:23
  • python3 http提交json参数并获取返回值的方法

    2023-09-26 12:30:06
  • django的聚合函数和aggregate、annotate方法使用详解

    2023-06-27 16:07:46
  • JS前端接口请求参数混淆方案分享

    2024-04-18 10:53:17
  • tkinter禁用(只读)下拉列表Combobox问题

    2021-01-02 13:05:34
  • 15分钟学会vue项目改造成SSR(小白教程)

    2024-04-27 16:07:07
  • 使用pandas将numpy中的数组数据保存到csv文件的方法

    2023-07-17 15:27:38
  • 如何利用pyecharts画好看的饼状图

    2021-04-19 09:07:19
  • Python数据分析之Python和Selenium爬取BOSS直聘岗位

    2021-04-27 08:53:19
  • asp之家 网络编程 m.aspxhome.com