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

一般模糊语句如下:

SELECT 字段 FROM 表 WHERE 某字段 Like 条件

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

1、%:表示任意0个或多个字符。可匹配任意类型和长度的字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

另外,如果须要找出u_name中既有“三”又有“猫”的记录,请运用 and条件

SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

若运用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'

虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

2、_: 表示任意单个字符。匹配单个任意字符,它常用来限定表达式的字符长度语句:

比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'

只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';

只找出“三藏”这样name为三个字且第一个字是“三”的;

3、[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'

将找出“张三”、“李三”、“王三”(而不是“张李王三”);

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

SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'

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

4、[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'

将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';

将排除“老1”到“老4”,寻找“老5”、“老6”、……

查询内容包含通配符时

由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句不能正常实现

sqlserver数据库中殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:

function sqlencode(str)

str=replace(str,"[","[[]") 此句一定要在最前str=replace(str,"_","[_]")

str=replace(str,"%","[%]")

sqlencode=str

end function

在查询前将待查字符串先经该函数(JAVA)处理即可。

/*通过如下代码进行处理*/

/*** 模糊查询需要对于特殊字符的处理(下划线_,百分号%,方括号[],尖号^)

*@paramName

*@return

*/

private staticString handleName(String name){if(StringUtils.isEmpty(name)){return "";

}//注意顺序,一定要先替换"[",再替换其他字符

return name.replace("[","[[]").replace("_", "[_]").replace("%", "[%]").replace("^", "[^]");

}

oracle和mysql数据库中,使用右斜杠\转义便可正常查询

在数据库中模糊查询时 %替换成\%,_替换成\_, \替换成\\\\ 。

在数据库中插入时\替换为\\就行

/*java中sql模糊查询特殊字符(\,%和_)处理*/

/*从前台jsp获取的查询条件*/String username= request.getParameter("username");if(username != null && !"".equals(username))

{//注意顺序,一定要先替换\,再替换_和%(_和%不分顺序)

String name=username.replace("\\", "\\\\\\\\").replace("_", "\\_").replace("%","\\%");

}

在MySQL数据库中进行模糊查询_数据库模糊查询相关推荐

  1. MySQL工作中的实际用_数据库在工作中的应用,以及什么是MySQL?

    数据库在工作中的应用: 1.软件都需要数据库(database)作为后台支撑 2.部署测试环境需要安装.配置数据库 3.数据库(database)中构造初始化数据 4.测试执行过程中需要验证数据库(d ...

  2. linux系统中mysql表中能添加中文_数据库学习之数据库增删改查(另外解决Mysql在linux下不能插入中文的问题)(二)...

    数据库增删改查 增加 首先我们创建一个数据库user,然后创建一张表employee create table employee( id int primary key auto_increment, ...

  3. mysql数据库中文选什么数据类型_数据库MySQL-选择合适的数据类型

    三.数据库结构的优化 1.选择合适的数据类型 1.数据类型选择 数据类型的选择,重点在于"合适"二字,如何确定选择的数据类型是否合适了? 1.使用可以存下你的数据的最小的数据类型. ...

  4. mysql数据库中怎么删除一行_数据库教程_mysql如何删除表中一行数据?- 中国it教程网...

    mysql中使用DELETE语句删除表中一行数据,语句为"DELETE FROM 表名称 WHERE 列名称 = 值".删除所有行的语句为"DELETE FROM tab ...

  5. [导入]在SYBASE数据库中使用游标(Cursors)将多行查询结果进行逐行处理

    在SYBASE数据库中使用游标(Cursors)将多行查询结果进行逐行处理 2000-08-16 14:47:33 在SYBASE数据库中,说明性数据库语言(SQL)是目前首推的最成功,应用最广泛的数 ...

  6. oracle 查询天,Oracle查询_ 单表查询

    前面我们详解了关于Oracle的增删改,今天让我们接着来学习Oracle的查询吧, Oracle中查询可是重头戏噢!!!跟着煌sir的步伐,走位,走位~~~ 小知识锦囊 在此前,先讲解一个小知识点 O ...

  7. navicat导出数据到oracle,使用Navicat premium导出oracle数据库中数据到SQL server2008数据库中...

    使用Navicat premium导出oracle数据库中数据到SQL server2008数据库中 发布时间:2018-08-20 14:41, 浏览次数:471 , 标签: Navicat pre ...

  8. 数据库实训心得体会_数据库实习个人总结

      数据库实训心得体会篇一一个月的数据库实训就转眼间就上完了,期间讲解了一个学生管理系统,最后还做了一个小的数据库链接作业.现在就说说关于vb链接的数据库的一些方法. 首先说数据库,简单的说就是建表格 ...

  9. mysql select符合查询_数据库select group by 和having语句 多表连接查询 复合查询

    1.SELECT --group by 子句 group by子句按照指定的列column_name对表数据进行分组 group by 后面跟的列也叫分组特性列 使用group by后,能选择的列   ...

  10. mysql中ak替换键_数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束...

    数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束 数据库:唯一性约束 所谓唯一性约束(unique constraint)不过是数据表内替代 ...

最新文章

  1. 2021-06-29快速找出Excel表格中两列数据不同内容的3种方法!
  2. CTFshow 文件上传 web156
  3. gcc/g++ 以及makefile
  4. 关于Jquery中ajax方法data参数用法的总结
  5. 火狐浏览器插件_期待!全新安卓正式版Firefox火狐浏览器,将支持97个插件
  6. 【计算机网络】协议,接口,服务
  7. 2017-12-04HTML table布局
  8. vim tutor summary
  9. php memcached存储对象,用于会话存储的Memcached或MySQL – PHP
  10. 如何阅读科研文献-------------一点思考与总结
  11. 手持式频谱分析仪TFN RMT720A 频谱分析 基站分析 路测覆盖
  12. HBuilderX格式化css
  13. C++ 工厂模式 总结分析
  14. insert overwrite出现Table insclause-0 has 9 columns, but query has 10 columns.
  15. 2017ACM-ICPC亚洲区域赛(西安站)
  16. Java篇 - 四种引用(Reference)实战
  17. 新版标准日本语初级_第二十三课
  18. Linux运维精华面试题
  19. 什么是堆、栈?堆和栈的区别
  20. MyBatis 入门 (二级缓存脏读)

热门文章

  1. Windows 搭建 翼龙面板 ( Pterodactyl ) 前端 教程
  2. 使用PdgCntEditor软件对PDF目录进行快速编辑
  3. 差分进化算法求解函数最优解matlab实现
  4. SpreadJS 15.2.3 黄金十月美好版
  5. 自动驾驶4WS车辆路径跟踪最优控制算法仿真
  6. Puget Systems发布硬件可靠性报告,三星SSD表现低故障率
  7. 阿里巴巴实习面试经历
  8. GA,PRE,SNAPSHOT有什么含义
  9. 随机生成姓名,姓名生成器
  10. 易飞erp postgre mysql_pgadmin 执行sql