Mysql 使用通配符进行模糊查询(like,%,_)

通配符的分类

1)%百分号通配符: 表示任何字符出现任意次数 (可以是0次).

2)_下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.

3)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 使用内置函数进行模糊查询(locate,position,instr,find_in_set)

1、LOCATE('substr',str,pos)方法

解释:返回 substr 在 str 中第一次出现的位置,如果 substr 在 str 中不存在,返回值为 0。如果pos存在,返回 substr 在 str 第pos个位置后第一次出现的位置。
    实例:
        select locate('Light','Light_20',3); 返回0
        select locate('Light','Light_20'); 返回1

例如数据库中字段scene_name有HDR_Light_20,Normal_Light_16,Light_12三种
            select * from VTD_RESULT where locate('Light',scene_name)>0; 查出HDR_Light_20,Normal_Light_16,Light_12数据
            select * from VTD_RESULT where locate('Light',scene_name,3)>0; 查出HDR_Light_20,Normal_Light_16数据
        备注:Light是要搜索的内容,scene_name为被匹配的字段,查询出所有存在scene_name的数据

2、POSITION('substr' IN `field`)方法

这个方法可以理解为locate()方法的别名,因为它和locate()方法的作用是一样的。
    实例:
        例如数据库中字段scene_name有HDR_Light_20,Normal_Light_16,Light_12三种
            select * from VTD_RESULT where position('Light' in scene_name)>0; 查出HDR_Light_20,Normal_Light_16,Light_12数据

3、INSTR(`str`,'substr')方法

实例:

select * from VTD_RESULT where instr(scene_name,'Light')>0;

除了上述的方法外,还有一个函数FIND_IN_SET,这个方法比较特殊,他所查询的必须要是以“,”分隔开。

4、FIND_IN_SET(str1,`field`)方法

返回`field`中str1所在的位置索引,其中`field`必须以","分割开。

转载于:https://www.cnblogs.com/mianbaoshu/p/10930491.html

mysql中的模糊查询(非原创)相关推荐

  1. mysql中like % %模糊查询

    1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '% ...

  2. mysql 通配符转转义_MySQL中的模糊查询和通配符转义

    MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2 ...

  3. mysql 电话模糊查询_mysql中的模糊查询

    转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或 ...

  4. 在mysql中通配符_mysql查询中通配符的使用

    mysql查询中通配符的使用 在mysql查询中经常会使用通配符,并且mysql的通配符和pgsql的存在区别(稍候再讨论),而且mysql中还可以使用正则表达式. SQL模式匹配: "_& ...

  5. MySQL中的各种查询

    文章目录 MySQL中的各种查询 基础查询 条件查询 排序查询 常见函数查询 分组查询 连接查询 内连接 外连接 交叉连接 子查询 联合查询 MySQL中的各种查询 基础查询 条件查询 #语法:sel ...

  6. MySQL基础_模糊查询—between and in is null <=>(安全等于)等关建字

    文章目录 MySQL基础_模糊查询-in关键字 MySQL基础_模糊查询-is null关键字 MySQL基础_[补充]安全等于的介绍 eg: select * from table where 字段 ...

  7. mysql 用户通配符_浅谈mysql通配符进行模糊查询的实现方法

    在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...

  8. MySQL多重条件模糊查询_简单实现mysql多字段模糊查询

    在后台的项目中,会经常遇到,就是信息的查找,这里就举个简单的例子,如搜索某一个产品的信息,在一个表里面有多个字段,而搜索的内容可能是其中的某个字段,这样只有多字段查询才能实现. MySQL多字段模糊查 ...

  9. Mybatis中的模糊查询

     今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句, 但是这个有问题,只有将字段的全部值传入其中,才能查询,所以不是迷糊查询. 后来经 ...

最新文章

  1. 剑指offer 04:重构二叉树
  2. 大数据WE阶段(十七)文件上传
  3. java 面试题三十三 子类父类方法执行顺序的问题
  4. 【POJ - 2976】【ZOJ - 3068】【SCU - 2992】Dropping tests (01分数规划)
  5. mysql 5.7 差异备份_MySQL 5.7 新备份工具mysqlpump 使用说明 - 运维小结
  6. 思科警告:IOS 路由器中含有多个严重缺陷,可导致“系统完全受陷”
  7. java技术栈有哪些_2020 年 Java 程序员应该学习掌握哪些技术?
  8. function小记
  9. AI-终极算法-遗传算法
  10. 广告投放管理平台 oython源码_【直播】全新腾讯广告投放管理平台如何帮助广告主乘风破浪?...
  11. 黑龙江全教计算机科技有限公司,50米×8往返跑是个技术活,技巧教学很重要
  12. 搜索引擎技术优化原理及方法
  13. Effective java学习笔记
  14. Mac系统中键盘失灵后的解决小技巧
  15. Windows XP 共享 Workgroup无法访问.您可能没有权限使用网络资源
  16. cf1163B2. Cat Party (Hard Edition)(简单总结一下map数据结构的简单方法)
  17. bedgraph文件转bigwig文件
  18. 3D漫游结合行业应用,实现企业营销价值
  19. 深度学习实战(4)如何向BERT词汇表中添加token,新增特殊占位符
  20. 云计算机基地有辐射吗,孕妇离电脑多远没有辐射

热门文章

  1. where条件中等值连接使用双竖杠影响SQL性能
  2. python虚拟环境配置文件_uwsgi 配置 python virtualenv 虚拟环境目录 ( ini 配置)
  3. 电脑无法检查计算机更新,安装win7系统弹出错误提示无法检查更新的方法
  4. Object类型转换成double/int类型
  5. RestTemplate与Feign使用对比
  6. Android开发笔记(一百四十五)仿应用宝的垃圾清理动画
  7. Android开发笔记(八十六)几个特殊的类
  8. 分析lammps文件_LAMMPS学习系列(24)
  9. 查看docker内部路径_web应用在Docker容器中部署(Windows)
  10. python 字典默认会引用 除非深拷贝