mysql模糊查询(详细的解析与例句)-建议收藏
模糊查询语句格式
SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件;
模糊查符号
模糊查询是针对字符串操作的,类似正则表达式,没有正则表达式强大
通配符:
【_】占位符,仅代表占用一个字符。
【%】通配符,代表通用不限制长度的字符。
【[]】范围筛选,
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”、
5,查询内容包含通配符时
由于通配符的缘故,导致我们查询特殊字符“%”、“_”、“[”的语句无法正常实现,而把特殊字符用“[ ]”括起便可正常查询。据此我们写出以下函数:
function sqlencode(str)
str=replace(str,"[","[[]") '此句一定要在最前
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end function
在查询前将待查字符串先经该函数处理即可,并且在网页上连接数据库用到这类的查询语句时侯要注意:
如Select * FROM user Where name LIKE '老[^1-4]';上面 【'】老[^1-4]【'】是要有单引号的,别忘了!
相关文章
- MySQL 慢查询
- Mysql查询缓存
- Mysql慢查询分析
- linux之CentOS7在线安装Mysql
- Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
- 自动监控主从MySQL同步的SHELL脚本
- MySQL的四种事务隔离级别
- mysql的查询、子查询及连接查询
- 【资料整理】MySQL -- SHOW TABLE STATUS
- # mysqlbinlog mysql-bin.000004 mysqlbinlog: unknown variable 'default-character-set=utf8'
- MySQL使用SQL实现Oracle Rank函数功能
- LAMP+redis搭建discuz论坛,基于mysql-proxy插件主从同步
- MySQL数据库order by 主键(索引) 查询慢解决方案
- MySQL优化之查询缓存(mysql8官方已经废弃这个功能)
- MySQL的Redolog/Undolog/binlog日志
- mysql 迁移 mariadb
- mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】
- mysql数据库1067错误
- 数据库面试要点:关于MySQL数据库千万级数据查询和存储
- mysql
- MySQL(11)连接查询
- MySQL添加多个字段
- MySQL 之单表查询
- MySQL 子结点查询所有父结点(查询结果包含自身结点)