MYSQL
来源:互联网 发布:mac airplay显示关闭 编辑:程序博客网 时间:2024/06/16 22:34
MySQL提供标准的SQL模式匹配,可以使用"_"匹配单个字符,%匹配任意数量的字符(包括0个字符)。当使用模式匹配时,用LIKE和NOT LIKE比较操作取代=和<>操作。
查询以"b"开头的名字的宠物
mysql> select * from pet where name like 'b%';+--------+--------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+--------+--------+---------+------+------------+------------+| Buffy | Harold | dog | f | 1989-05-13 | NULL || Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |+--------+--------+---------+------+------------+------------+2 rows in set (0.00 sec)mysql>
查询以fy结尾的名字的宠物
mysql> select * from pet where name like '%fy';+--------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+--------+--------+---------+------+------------+-------+| Fluffy | Harold | cat | f | 1993-02-04 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+--------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql>
查询名字中包含'w'的宠物
mysql> select * from pet where name like '%w%';+----------+-------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+----------+-------+---------+------+------------+------------+| Whistler | Gwen | bird | NULL | 0000-00-00 | NULL || Claws | Gwen | cat | m | 1994-03-17 | NULL || Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |+----------+-------+---------+------+------------+------------+3 rows in set (0.01 sec)mysql>
查询名字中精确包含5个字符的宠物,使用5个'_'匹配5个字符
mysql> select * from pet where name like '_____';+-------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+-------+--------+---------+------+------------+-------+| Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+-------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql>
MySQL提供的另一种类型的模式匹配用的是扩展的正则表达式。当使用这种类型的模式匹配时,用REGEXP和NOT REGEXP操作(或RLIKE和NOT RLIKE)
下面列表描述了扩展的正则表达式的一些使用
- "."匹配任意的单个字符
- "[...]"匹配在括号中的任意字符。如[abc]匹配“a", "b" 或"c"。匹配一个范围的字符,用一个连字符"-",[a-z]匹配任意字母,而[0-9]匹配任意数字。
- "*"匹配0或多个其之前的实例。如"x*"匹配任意数量的"x"字符,"[0-9]*"匹配任意数量的数字,而".*"匹配任意数量的字符。
- 如果被测值的任意位置能与模式匹配,则REGEXP模式匹配成功(LIKE类型的模式匹配则要求整个被测值都匹配模式成功)
- 为使一个模式从开头或结尾匹配,使用"^"在模式开头或使用"$"在模式结尾。
使用REGEXP重写之前的查询语句
查询以"b"开头的名字的宠物
mysql> select * from pet where name rlike '^b';+--------+--------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+--------+--------+---------+------+------------+------------+| Buffy | Harold | dog | f | 1989-05-13 | NULL || Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |+--------+--------+---------+------+------------+------------+2 rows in set (0.00 sec)mysql> select * from pet where name regexp '^b';+--------+--------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+--------+--------+---------+------+------------+------------+| Buffy | Harold | dog | f | 1989-05-13 | NULL || Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |+--------+--------+---------+------+------------+------------+2 rows in set (0.00 sec)mysql>
查询以fy结尾的名字的宠物
mysql> select * from pet where name rlike 'fy$';+--------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+--------+--------+---------+------+------------+-------+| Fluffy | Harold | cat | f | 1993-02-04 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+--------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql> select * from pet where name regexp 'fy$';+--------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+--------+--------+---------+------+------------+-------+| Fluffy | Harold | cat | f | 1993-02-04 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+--------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql>
如果希望REGEXP比较是大小写敏感的,使用BINARY关键字。以下查询仅匹配小写字母"b"在名字的开头。
mysql> select * from pet where name rlike binary '^b';Empty set (0.00 sec)mysql> select * from pet where name regexp binary '^b';Empty set (0.00 sec)mysql>
查询名字中包含'w'的宠物
mysql> select * from pet where name rlike 'w';+----------+-------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+----------+-------+---------+------+------------+------------+| Whistler | Gwen | bird | NULL | 0000-00-00 | NULL || Claws | Gwen | cat | m | 1994-03-17 | NULL || Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |+----------+-------+---------+------+------------+------------+3 rows in set (0.00 sec)mysql> select * from pet where name regexp 'w';+----------+-------+---------+------+------------+------------+| name | owner | species | sex | birth | death |+----------+-------+---------+------+------------+------------+| Whistler | Gwen | bird | NULL | 0000-00-00 | NULL || Claws | Gwen | cat | m | 1994-03-17 | NULL || Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |+----------+-------+---------+------+------------+------------+3 rows in set (0.00 sec)mysql>
查询名字中精确包含5个字符的宠物
mysql> select * from pet where name rlike '^.....$';+-------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+-------+--------+---------+------+------------+-------+| Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+-------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql> select * from pet where name regexp '^.....$';+-------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+-------+--------+---------+------+------------+-------+| Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+-------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql>
也可以使用{n}(重复n次)操作
mysql> select * from pet where name rlike '^.{5}$';+-------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+-------+--------+---------+------+------------+-------+| Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+-------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql> select * from pet where name regexp '^.{5}$';+-------+--------+---------+------+------------+-------+| name | owner | species | sex | birth | death |+-------+--------+---------+------+------------+-------+| Claws | Gwen | cat | m | 1994-03-17 | NULL || Buffy | Harold | dog | f | 1989-05-13 | NULL |+-------+--------+---------+------+------------+-------+2 rows in set (0.00 sec)mysql>
0 0
- Mysql
- MySql
- MYSQL
- MySQL
- mysql
- mysql
- mysql
- mysql
- Mysql
- Mysql
- mysql
- MySQL
- mysql
- Mysql
- mysql
- mysql
- mysql
- mySQL
- POJ 1330 Nearest Common Ancestors 【最近公共祖先】
- 零基础Linux下安装jdk与tomcat最精简版本
- Resteasy概述,Resteasy使用说明,Resteasy讲解
- 数塔 (dp水题)
- GSM短信收发介绍
- MYSQL
- 进程间通信(IPC)方式
- 对于职业规划讲座的感受
- 手把手教你识别三极管和场效应管引脚
- [剑指Offer]替换空格
- JAVA学习路线 --- 从菜鸟到大师
- 动态规划:数字三角形
- NGUI_Joystick
- 自定义button常按监听