在MySQL数据库中进行模糊查询_数据库模糊查询
执行数据库查询时,有完整查询和模糊查询之分。
一般模糊语句如下:
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数据库中进行模糊查询_数据库模糊查询相关推荐
- MySQL工作中的实际用_数据库在工作中的应用,以及什么是MySQL?
数据库在工作中的应用: 1.软件都需要数据库(database)作为后台支撑 2.部署测试环境需要安装.配置数据库 3.数据库(database)中构造初始化数据 4.测试执行过程中需要验证数据库(d ...
- linux系统中mysql表中能添加中文_数据库学习之数据库增删改查(另外解决Mysql在linux下不能插入中文的问题)(二)...
数据库增删改查 增加 首先我们创建一个数据库user,然后创建一张表employee create table employee( id int primary key auto_increment, ...
- mysql数据库中文选什么数据类型_数据库MySQL-选择合适的数据类型
三.数据库结构的优化 1.选择合适的数据类型 1.数据类型选择 数据类型的选择,重点在于"合适"二字,如何确定选择的数据类型是否合适了? 1.使用可以存下你的数据的最小的数据类型. ...
- mysql数据库中怎么删除一行_数据库教程_mysql如何删除表中一行数据?-
中国it教程网...
mysql中使用DELETE语句删除表中一行数据,语句为"DELETE FROM 表名称 WHERE 列名称 = 值".删除所有行的语句为"DELETE FROM tab ...
- [导入]在SYBASE数据库中使用游标(Cursors)将多行查询结果进行逐行处理
在SYBASE数据库中使用游标(Cursors)将多行查询结果进行逐行处理 2000-08-16 14:47:33 在SYBASE数据库中,说明性数据库语言(SQL)是目前首推的最成功,应用最广泛的数 ...
- oracle 查询天,Oracle查询_ 单表查询
前面我们详解了关于Oracle的增删改,今天让我们接着来学习Oracle的查询吧, Oracle中查询可是重头戏噢!!!跟着煌sir的步伐,走位,走位~~~ 小知识锦囊 在此前,先讲解一个小知识点 O ...
- navicat导出数据到oracle,使用Navicat premium导出oracle数据库中数据到SQL server2008数据库中...
使用Navicat premium导出oracle数据库中数据到SQL server2008数据库中 发布时间:2018-08-20 14:41, 浏览次数:471 , 标签: Navicat pre ...
- 数据库实训心得体会_数据库实习个人总结
数据库实训心得体会篇一一个月的数据库实训就转眼间就上完了,期间讲解了一个学生管理系统,最后还做了一个小的数据库链接作业.现在就说说关于vb链接的数据库的一些方法. 首先说数据库,简单的说就是建表格 ...
- mysql select符合查询_数据库select group by 和having语句 多表连接查询 复合查询
1.SELECT --group by 子句 group by子句按照指定的列column_name对表数据进行分组 group by 后面跟的列也叫分组特性列 使用group by后,能选择的列 ...
- mysql中ak替换键_数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束...
数据库:唯一性约束_alternate key(替换键) mySQL Oracle 数据库 ak 唯一性约束 数据库:唯一性约束 所谓唯一性约束(unique constraint)不过是数据表内替代 ...
最新文章
- 2021-06-29快速找出Excel表格中两列数据不同内容的3种方法!
- CTFshow 文件上传 web156
- gcc/g++ 以及makefile
- 关于Jquery中ajax方法data参数用法的总结
- 火狐浏览器插件_期待!全新安卓正式版Firefox火狐浏览器,将支持97个插件
- 【计算机网络】协议,接口,服务
- 2017-12-04HTML table布局
- vim tutor summary
- php memcached存储对象,用于会话存储的Memcached或MySQL – PHP
- 如何阅读科研文献-------------一点思考与总结
- 手持式频谱分析仪TFN RMT720A 频谱分析 基站分析 路测覆盖
- HBuilderX格式化css
- C++ 工厂模式 总结分析
- insert overwrite出现Table insclause-0 has 9 columns, but query has 10 columns.
- 2017ACM-ICPC亚洲区域赛(西安站)
- Java篇 - 四种引用(Reference)实战
- 新版标准日本语初级_第二十三课
- Linux运维精华面试题
- 什么是堆、栈?堆和栈的区别
- MyBatis 入门 (二级缓存脏读)