MySQL 基础——使用通配符进行搜索过滤
来源:互联网 发布:触发器sqlserver 编辑:程序博客网 时间:2024/06/03 13:33
通配符过滤
使用通配符,必须使用 like 操作符
作用:广泛匹配(in 精确匹配,where 范围匹配,like 广泛匹配)
格式:select 列 from 表名 where 列 like 匹配内容
% 任何字符,出现任意次数(包括0次),不能匹配 NULL
'ABC%' 所有 ABC 开头的字符串
'%ABC' 所有 ABC 结尾的字符串
'%LY%' 所有包含 LY 的字符串
> select * from tb1 where name like '%da%';
匹配内容里面的数字,没有大小写之分,da 和 Da 和 DA 匹配出来的结果一致。
_ 下划线,任意一个字符,不能匹配 NULL ,不能匹配 0 个字符
'A_Z' 所有A开头,Z结尾,中间只有一个字符的数据,如 AkZ A1Z,
'a__z' 所有 A 开头,z 结尾,中间有两个字符的数据
使用通配符建议
使用通配符搜索,所花费的时间和系统资源相比其他搜索方式更高。
- 不用过度使用,在其他方式能达到相同目的的时候,不要使用通配符。
- 除非确实需要,而且绝对必要,否则不要把通配符放在搜索单词的开头
- 注意通配符的位置以及和 NULL 以及 0 字符的关系。
如果单词后面有空格,可能会干扰 % 匹配,apple 单词后面有 4 个空格,%apple 匹配不到。
MySQL 正则表达式的脱意字符是两个反斜线,MySQL 自己解释一个,正则表达式库解释一个,shell 语言里面是一个反斜线。
regexp 匹配字符串,like 匹配整行,例如有一行内容为 'ge bi lao wang', regexp 'ge' 会匹配出该行,而 like 'ge' 并不会匹配。
正则表达式进行搜索
正则表达式用来匹配文本的任意位置的特殊字符串。
REGEXP '内容' REGEXP 必须放在正则匹配内容的前面
. 表示任意一个字符(实际测试,能匹配多个字符)
> select * from tb1 where name regexp 'wang.';
binary 不区分大小写匹配
> select * from tb1 where name regexp binary 'wangdaye';
管道符 | 进行 OR 匹配
> select * from tb1 where name regexp 'wangdaye|wangbin';
> select * from tb1 where name regexp binary 'wangdaye|WANGdaye';
or 可以匹配多个条件,A|B|C
中括号 [ .. ] 匹配多个字符
[123] 单次匹配 1 2 3
[a-z] 单次匹配 a 到 z 的任意一个字母
[0-9] 单次匹配 0 到 9 的任意一个数字
> select prod_name prod_price from prodlist where prod_name regexp '[123] ton';
匹配 1 ton ; 2 ton; 3 to
脱意符号 \\ 用来找特殊字符
\\f 换页
\\n 换行
\\r 回车
\\t 制表
\\v 纵向制表
\\\ 匹配反斜杠
> select prod_name prod_price from prodlist where prod_name regexp '\\.';
匹配包含字符 . 的商品名字
预定义字符表,MySQL 内置的通配符内容
无需多记忆这些东西,了解即可
[:digit:] 任意数字,同[0-9]
[:alpha:] 任意字符,同 [a-zA-Z]
[:alnum:] 任意字母和数字,同 [a-zA-Z0-9]
[:blank:] 空格和制表,同 [\\t]
[:cntrl:] ASCII 控制字符
[:lower:] 任意小写字母,同[a-z]
[:print:] 任意可打印字符,包括空格
[:graph:] 同 print,但是不包括空格
[:punct:] 既不在 alnum 也不再 cntrl 的任意字符
[:space:] 包括空格在内的任意空白字符,同[\\f\\n\\r\\t\\v]
[:upper:] 任意大写字母,同 [A-Z]
[:xdigti:] 任意十六进制数字,同 [a-fA-F0-9]
多重匹配
* 0个或多个匹配
+ 1个或多个匹配,等于 {1,}
? 0个或1个匹配,等于 {0,1}
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围,m 不超过 255
> select prodname prodprice from prodlist where prodname regexp '\\([0-9] sticks?\\)';
\\(匹配\\) 脱意符号 \\ 用来脱意小括号
[0-9] 匹配任意0-9的数字一次
> select prodname prodprice from prodlist where prodname regexp '[0-9]{4}';
> select prodname prodprice from prodlist where prodname regexp '[0-9][0-9][0-9]0-9]';
匹配连续四个数字的行
定位符
^ 文本开始
$ 文本结束
[[:<:]] 词的开始
[[:>:]] 词的结尾
> select * from tb1 where name regexp binary '^[wWg]';
> select prodname from prodlist where prodname regexp '[0-9\\.];
匹配以 0 到 9 或者小数点 . 开头的数据
阅读全文
0 0
- MySQL 基础——使用通配符进行搜索过滤
- MySQL用通配符进行过滤
- MYSQL必知必会读书笔记 第八章 使用通配符进行过滤
- mysql---使用通配符搜索
- MySQL必知必会-7用通配符进行过滤
- [MYSQL-8]用通配符进行过滤
- mysql过滤数据(三)用通配符进行过滤
- Mysql必知必会(笔记)【高级数据过滤、通配符进行过滤】
- 用通配符进行过滤
- MYSQL学习笔记(五)用通配符进行过滤
- MySQL通配符过滤
- MySQL通配符过滤数据
- MySQL 用通配符过滤
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- 【MySQL】 SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- MySql通配符过滤,正则表达式过滤.
- 观察者模式
- Codeforces Round #415 A Straight <<A>>
- Week Training: 486 Predict the Winner
- mysql 5.7.14 文件夹安装服务向导
- 第一周(2)——项目范围界定
- MySQL 基础——使用通配符进行搜索过滤
- 添加当前用户到sudoers里面
- 『ORACLE』查看所有视图(11g)
- 基于ARM Cortex -A8 的S5PV210处理器的学习笔记(1)
- 前端过滤文本中的关键字
- 利用HTML和CSS实现常见的布局
- HTTPS详析(二)
- 初识机器学习-理论篇
- 在Eclipse环境下安装Kotlin插件