博客
关于我
MySQL学习笔记.查询数据3
阅读量:517 次
发布时间:2019-03-07

本文共 4700 字,大约阅读时间需要 15 分钟。

正则表达式查询

查询特定字符或字符串开头的记录

字符‘^’匹配以特定字符或字符串开头的文本

1.查询以x开头的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP '^x';+------+------+---------+---------+| f_id | s_id | f_name  | f_price |+------+------+---------+---------+| b5   |  107 | xxxx    |    3.60 || m2   |  105 | xbabay  |    2.60 || t4   |  107 | xbababa |    3.60 |+------+------+---------+---------+3 rows in set (0.00 sec)

2查询以xx开头的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP '^xx';+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| b5   |  107 | xxxx   |    3.60 |+------+------+--------+---------+1 row in set (0.00 sec)

查询特定字符或字符串结尾的记录

字符$匹配以特定字符或字符串结尾的文本

1.查询以e结尾的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP 'e$';+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| a1   |  101 | apple  |    5.20 || bs1  |  102 | orange |   11.20 || t2   |  102 | grape  |    5.30 |+------+------+--------+---------+3 rows in set (0.00 sec)

2.查询以go结尾的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP 'go$';+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| m1   |  106 | mngo   |   15.70 |+------+------+--------+---------+1 row in set (0.00 sec)

用符号.来代替字符串中任一字符

字符.匹配任意一个字符

1.查询包含r某y的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP 'r.y';+------+------+------------+---------+| f_id | s_id | f_name     | f_price |+------+------+------------+---------+| b1   |  101 | blackberry |   10.20 || b2   |  104 | berry      |    7.60 || c0   |  101 | cherry     |    3.20 |+------+------+------------+---------+3 rows in set (0.00 sec)

用符号“*”和“+”来匹配多个字符

“*”可匹配前面多个字符,“+”至少匹配前面字符一次

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP '^mn*';+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| bs2  |  105 | melon  |    8.20 || m1   |  106 | mngo   |   15.70 |+------+------+--------+---------+2 rows in set (0.00 sec)
mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP '^mn+';+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| m1   |  106 | mngo   |   15.70 |+------+------+--------+---------+1 row in set (0.00 sec)

匹配指定字符串

正则表达式可以匹配指定的字符串,只要这个字符串在查询文本中即可,如果要匹配多个字符串,多个字符串之间使用分隔符"|"隔开

1.查询包含字符串“ge”的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP 'ge';+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| bs1  |  102 | orange |   11.20 |+------+------+--------+---------+1 row in set (0.00 sec)

2.查询包含“ge”或者"na"的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP 'ge|na';+------+------+--------+---------+| f_id | s_id | f_name | f_price |+------+------+--------+---------+| bs1  |  102 | orange |   11.20 || t1   |  102 | banana |   10.30 |+------+------+--------+---------+2 rows in set (0.00 sec)

匹配指定字符中的任意一个

方括号“[]”指定一个字符集合,只匹配其中任何一个字符。

1.查询包含字母“a”或者"e"的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP '[ae]';+------+------+------------+---------+| f_id | s_id | f_name     | f_price |+------+------+------------+---------+| a1   |  101 | apple      |    5.20 || a2   |  103 | apricot    |    2.20 || b1   |  101 | blackberry |   10.20 || b2   |  104 | berry      |    7.60 || bs1  |  102 | orange     |   11.20 || bs2  |  105 | melon      |    8.20 || c0   |  101 | cherry     |    3.20 || m2   |  105 | xbabay     |    2.60 || t1   |  102 | banana     |   10.30 || t2   |  102 | grape      |    5.30 || t4   |  107 | xbababa    |    3.60 |+------+------+------------+---------+11 rows in set (0.00 sec)

使用{n,}或者{n,m}来指定字符串出现的次数

查询至少连续出现2次r的记录

mysql> SELECT *    -> FROM fruits    -> WHERE f_name REGEXP 'r{2,}';+------+------+------------+---------+| f_id | s_id | f_name     | f_price |+------+------+------------+---------+| b1   |  101 | blackberry |   10.20 || b2   |  104 | berry      |    7.60 || c0   |  101 | cherry     |    3.20 |+------+------+------------+---------+3 rows in set (0.00 sec)

匹配指定字符以外的字符

“[^字符集合]”匹配不在指定集合中的任何字符

匹配非101-104的记录

mysql> SELECT *    -> FROM fruits    -> WHERE s_id REGEXP '[^101-104]';+------+------+---------+---------+| f_id | s_id | f_name  | f_price |+------+------+---------+---------+| a2   |  103 | apricot |    2.20 || b5   |  107 | xxxx    |    3.60 || bs1  |  102 | orange  |   11.20 || bs2  |  105 | melon   |    8.20 || m1   |  106 | mngo    |   15.70 || m2   |  105 | xbabay  |    2.60 || t1   |  102 | banana  |   10.30 || t2   |  102 | grape   |    5.30 || t4   |  107 | xbababa |    3.60 |+------+------+---------+---------+9 rows in set (0.00 sec)

转载地址:http://kzfnz.baihongyu.com/

你可能感兴趣的文章
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>
MySQLIntegrityConstraintViolationException异常处理
查看>>
mysqlreport分析工具详解
查看>>
MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
查看>>