执行数据库查询时,有完整查询和模糊查询之分。

一般模糊语句格式如下:

SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件;

其中,关于条件,SQL提供了四种匹配模式:

一、%:表示零个或多个字符。


可以匹配任意类型和任意长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

select * from flow_user where username like '%王%';

将会把flow_user这张表里面,列名username中含有“王”的记录全部查询出来。


如果需要找到flow_user这张表里面,字段username中既有“唐”,又有“英”的记录,可以使用and条件

select * from flow_user where username like '%英%' and username like '%唐%';

则可以查询出来所有包含“英”和“唐”的所有内容,“英”和“唐”所在的前后位置无所谓。


select * from flow_user where username like '%英%唐%';

可以查出来包含“英唐”的内容,但是查不出来“唐英”的内容。


二、_:表示任意单个字符

匹配单个任意字符,它常用来限制表达式的字符长度


select * from flow_user where username like '_英_';

只能找到“王英琨”这样username为三个字且中间一个字是“英”的内容。


select * from flow_user where username like '英__';

只能找到“英雄点”这样username为三个字且第一个字是“英”的内容。


三、[]:表示括号内所列字符中的一个(类似正则表达式)。

指定一个字符、字符串或范围,要求所匹配的对象为他们中的任一个。

将找出“王飞”“李飞”“张飞”(而不是“张王李飞”)。


如[]内有一系列字符(01234,abcde之类的)则可略写为“0-4”,“a-e”:

select * from flow_user where username like '老[0-9]';

将找出“老1”、“老2”、……、“老9”;


Oracle 10g以上的版本用法为:  

select * from flow_user where regexp_like(username, '[张王李]飞');

四、[^]:表示不在括号所列之内的单个字符。

其取之和[]相同,但它所要求匹配对象为指定字符以外的任一个字符。


select * from flow_user where username LIKE'[^王李张]飞';

将找出不是“王飞”“李飞”“张飞“的”赵飞“、”吴飞“等。

注:oracle like 不支持正则,你可以使用支持like的正则regexp_like


五、查询内容包含通配符时:

由于通配符的缘故,导致查询特殊字符“%”、“_”、“[”的语句无法正常实现,把特殊字符用“[]”括起来便可以正常查询。
  
function sqlencode(str)
str=replace(str,”[“,”[[]”) ‘此句一定要在最前
str=replace(str,”“,”[]”)
str=replace(str,”%”,”[%]”)
sqlencode=str
end function

SQL 怎么实现模糊查询?的更多相关文章

  1. 避免SQL全表模糊查询查询 下载文件时-修改文件名字

    避免SQL全表模糊查询查询   1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like %...%(全模糊)这样的条件,是无法使用索引的,全表扫描自然效 ...

  2. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

  3. SQL中常用模糊查询的四种匹配模式&&正则表达式

    执行数据库查询时,有完整查询和模糊查询之分.一般模糊语句如下:SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式:1.%:表示任意0个或多个字 ...

  4. sql like 通配符 模糊查询技巧及特殊字符

    最近碰到like模糊匹配的问题,找到一些答案接触迷惑,觉得有知识是自己忽略的,现在整理出来,既强化记忆,又是一次记录,以下转自一篇Blog,关于sql server like的通配符和字符带通配符的处 ...

  5. SSM-MyBatis-05:Mybatis中别名,sql片段和模糊查询加getMapper

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 简单概述一下本讲 别名,sql片段简单写一下,模糊查询多写一点 一.别名 <typeAliases> ...

  6. C#EF中,使用类似于SQL中的% 模糊查询

    最近在做项目的时候需要使用到模糊查询,但是后台使用EF写的 而不是ADO或者是Dapper,如果是这样的话,我们就可以使用Sql语句直接进行模糊查询 现在我们需要在LINQ中使用类似于模糊查询 在EF ...

  7. 避免SQL全表模糊查询查询

    1.模糊查询效率很低: 原因:like本身效率就比较低,应该尽量避免查询条件使用like:对于like %...%(全模糊)这样的条件,是无法使用索引的,全表扫描自然效率很低:另外,由于匹配算法的关系 ...

  8. sql 根据日期模糊查询&SQL Server dateTime类型 模糊查询

    曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm: ...

  9. SQL生僻字模糊查询

    生僻字指在数据库默认的编码中不存 又称难字或冷僻字 一.SQL中解决生僻字录入乱码问题[调整列数据类型->由varchar改为NVARCHAR]

随机推荐

  1. ASP.NET Web API编程——使用自签名SSL证书

    1自签名SSL证书的创建 创建自签名SSL工具xca为:https://sourceforge.net/projects/xca/ 创建过程 1)创建根证书 打开软件,界面如下. 点击,看到下拉菜单, ...

  2. 以EF形式操作mysql数据库

    1.引入Nuget包: 2.书写EF操作上下文 public class MySqlContext:DbContext { protected override void OnConfiguring( ...

  3. FactoryBean的实现原理与作用

    FactoryBean与BeanFactory: 这俩货在拼写上很是相似,很多同学在看IOC源码或者其他地方并不能分清有啥区别,前面的IOC源码中我简单说过,现在统一简单来讲一下: FactoryBe ...

  4. iview(DatePicker)时间转入后台少一天 解决方案

    后台注解 前台: 加个事件 @on-change @on-change="getStartTime" getStartTime(starTime) { this.leaveReco ...

  5. mavan下scala编译中文乱码的问题.以及内存溢出问题解决

    网上都没有找到我这个问题.都是自己解决的.也不知道后来者能不能遇到 关键字: java.lang.StackOverflowError scala not found scala <config ...

  6. jsp内置对象pageContext如何在Servlet中获取值

    pageContext javax.servlet.jsp.PageContext 的实例,该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据.常用的方法有getServletCont ...

  7. 身份认证系统(三)什么是OAuth2

    本文准备用最简单的语言告诉大家什么是OAuth2 ,OAuth2是干什么的. 我们有一个资源服务器,资源服务器中有一系列的用户数据. 现在有一个应用想想要获取我们的用户数据. 那么最简单的方法就是我们 ...

  8. Adnroid studio 无法 Build APK(s)

    报错 Error:java.nio.file.AccessDeniedException: C:\Program Files\Android\android-sdk-windows\.android\ ...

  9. Spark集群无法停止的原因分析和解决

    今天想停止spark集群,发现执行stop-all.sh的时候spark的相关进程都无法停止.提示: no org.apache.spark.deploy.master.Master to stop ...

  10. React最佳实践(1)

    React最佳实践不敢妄谈,但最差实践非知乎莫属. 旧版知乎看起来土了点,但体验流畅,起码用起来舒服. 新版知乎看起来UI现代化,技术实现上采用了React,但是可能因为知乎缺钱,请不起高水平的前端工 ...