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

一般模糊语句格式如下:

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. Mac系统下配置JAVA Maven Ant 环境变量

    Mac 启动加载文件位置(可设置环境变量) ------------------------------------------------------- (1)首先要知道你使用的Mac OS X是什 ...

  2. Flask—08-建立自己的博客(02)

    博客项目 上一篇内容完善 自定义字段验证函数 class RegisterForm(FlaskForm): ... def validate_username(self, field): user = ...

  3. 简单几行代码使用百度地图API接口分页获取信息

    首发于: 万能助手扩展开发:使用百度地图API接口分页获取信息_电脑计算机编程入门教程自学 http://jianma123.com/viewthread.aardio?threadid=426 使用 ...

  4. VirtualBox复制的虚拟机无法获取IP解决办法

    自从建立了这个账号后写了一篇,好几年没来了,今天来看看,顺便分享一下. 昨天晚上想玩玩zookeeper集群,在vb里复制了一台主机,可怎么也无法获取IP,经研究,终于还是解决了. 1.复制主机时勾选 ...

  5. Kaggle比赛总结

    做完 Kaggle 比赛已经快五个月了,今天来总结一下,为秋招做个准备. 题目要求:根据主办方提供的超过 4 天约 2 亿次的点击数据,建立预测模型预测用户是否会在点击移动应用广告后下载应用程序. 数 ...

  6. Java并发之线程状态及Thread常用方法

    本篇文章主要讲解线程的虚拟机状态和线程基本方法,希望可以加深对线程的使用理解. 一.线程的虚拟机状态 线程对象在不同的运行期间有不同的状态,状态信息定义在Thread公共静态枚举java.lang.T ...

  7. angular常用属性大全

    Angular元素属性大全 addClass()-为每个匹配的元素添加指定的样式类名 after()-在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点 append()-在每个匹配元 ...

  8. 关于vue中mockjs的使用

    使用vue的时候,后台可能不能及时作出接口,那么就需要我们前端自己模拟数据,使用mockjs可以进行模拟数据. 首先安装mockjs,cnpm install mockjs --save-dev: 其 ...

  9. Product Helper

    using System; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; /// <summary> /// 产品 ...

  10. 一图看懂mybatis执行过程

    一图看懂mybatis执行过程,不再懵B了