`
snake_hand
  • 浏览: 624977 次
社区版块
存档分类
最新评论

MySQL 通配符学习小结

 
阅读更多

MySQL 通配符

SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在 MySQL中,SQL的模式缺省是忽略大小写的。下面显示一些例子。

注意在你使用SQL模式时,你不能使用=或!=;而使用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 | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

为了找出以“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 |
+--------+--------+---------+------+------------+-------+

为了找出包含一个“w”的名字:

mysql> SELECT * FROM pet WHERE name LIKE "%w%";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

为了找出包含正好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 |
+-------+--------+---------+------+------------+-------+

由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。

扩展正则表达式的一些字符是:

“.”匹配任何单个的字符。
一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]” 匹配任何小写字母,而“[0-9]”匹配任何数字。
* ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。
正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。

如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
为了说明扩展正则表达式如何工作,上面所示的LIKE查询在下面使用REGEXP重写:

为了找出以“b”开头的名字,使用“^”匹配名字的开始并且“[bB]”匹配小写或大写的“b”:

mysql> SELECT * FROM pet WHERE name REGEXP "^[bB]";
+--------+--------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+--------+--------+---------+------+------------+------------+
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
+--------+--------+---------+------+------------+------------+

为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:

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 |
+--------+--------+---------+------+------------+-------+

为了找出包含一个“w”的名字,使用“[wW]”匹配小写或大写的“w”:

mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
+----------+-------+---------+------+------------+------------+
| name | owner | species | sex | birth | death |
+----------+-------+---------+------+------------+------------+
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Bowser | Diane | dog | m | 1989-08-31 | 1995-07-29 |
| Whistler | Gwen | bird | NULL | 1997-12-09 | NULL |
+----------+-------+---------+------+------------+------------+

既然如果一个正规表达式出现在值的任何地方,其模式匹配了,就不必再先前的查询中在模式的两方面放置一个通配符以使得它匹配整个值,就像如果你使用了一个SQL模式那样。

为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:

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 |
+-------+--------+---------+------+------------+-------+

你也可以使用“{n}”“重复n次”操作符重写先前的查询:

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 |
+-------+--------+---------+------+------------+-------+

http://www.playhosts.com/bbs/read.php?tid=12357

=====================================================================

分享到:
评论

相关推荐

    MySQL 数据库 like 语句通配符模糊查询小结

    MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)——MySQL 数据库 like 语句通配符模糊查询小结 前言 今天在使用MySQL语句执行增删改查操作时,控制台报出了以下错误:Parameter...

    mysql学习总结

    以下是对MySQL学习的一些关键知识点的总结: 1. **用户名和口令**:MySQL允许的用户名长度最多为16个字符,而Unix系统通常限制用户名为8个字符。在命令行上直接输入口令存在安全隐患,因此应避免。MySQL的身份验证...

    浅谈mysql通配符进行模糊查询的实现方法

    总结起来,MySQL的通配符模糊查询提供了强大的数据查找能力,但同时也需要谨慎使用以优化查询性能。通过理解通配符的工作原理和注意事项,我们可以更有效地进行模糊查询,提高数据库操作的效率。希望这篇文章能帮助...

    mysql学习总结.docx

    MySQL数据库学习总结 MySQL 是一种关系数据库管理系统(RDBMS),它被广泛应用于 Web 应用程序中。学习 MySQL 是一个非常重要的任务,以下是 MySQL 学习笔记中的重要知识点总结。 一、备份和恢复 mysqldump 命令...

    Mysql知识点总结.pdf

    Mysql知识点总结 1. 数据库基本术语:数据库是数据的集合,MySQL是一种数据库管理系统(DBMS),它使用SQL语言进行数据库的管理。...以上为Mysql数据库的基础知识点总结,适用于基础学习、面试复习和日常工作查阅。

    SQL中查询中使用通配符

    在实际应用中,根据所使用的数据库系统(如MySQL、SQL Server、Oracle等),SQL语法和连接方式可能会有所不同,但基本的查询逻辑和通配符的使用是一致的。记得在使用完毕后,始终关闭数据库连接,以释放资源并保持...

    mysql设置指定ip远程访问连接实例

    总结,设置MySQL指定IP远程访问连接涉及权限授权、防火墙配置以及安全策略的调整。通过遵循上述步骤并确保安全性,你可以让指定的IP地址访问远程MySQL数据库,从而实现更灵活的数据库管理与协作。

    MySQL 设置远程访问

    MySQL数据库是世界上最流行的开源关系型数据库之一,...总结来说,MySQL设置远程访问涉及修改服务器配置和授权用户,这使得从远程位置连接和管理数据库成为可能。在实施时,必须确保适当的安全措施以防止未授权访问。

    mysql正则表达式 LIKE 通配符

    总结来说,MySQL中的正则表达式模式匹配是一种强大的文本处理工具,通过灵活使用各种正则表达式的特性,可以完成各种复杂的文本匹配任务。对于数据库管理员和开发者来说,掌握正则表达式的使用,能够极大地提高...

    MySQL面试题总结.pdf

    ### MySQL面试题总结 #### 一、SQL与MySQL基础 - **SQL**(Structured Query Language,结构化查询语言):是一种用于管理关系数据库的标准语言,主要用于处理数据的查询、更新和管理等方面。 - **MySQL**:是一个...

    计算机二级《MySQL数据库程序设计》知识点总结.pdf

    以上知识点总结了MySQL数据库程序设计的基础和高级特性,涉及了SQL语句的编写、数据操作、表的维护、索引和视图的管理,以及全文搜索和存储引擎等高级概念。掌握了这些知识点,对于进行MySQL数据库设计和维护将...

    mysql总结超详细

    - **2.1.3.4 关于字符类型小结** - 根据实际需求选择合适的类型。 ##### 2.1.4 为表的字段创建索引 - **2.1.4.1 为表创建主键索引的方法** - 在创建表时指定主键。 - 或者使用`ALTER TABLE table_name ADD ...

    mysql优化、sql语句

    SQL语句不区分大小写,但为了代码可读性,通常推荐使用大写字母书写关键词,小写字母书写表名和列名。 **MySQL简介** MySQL是一款开放源代码的关系型数据库管理系统(RDBMS),属于基于客户机-服务器模型的DBMS。...

    Linux开启mysql远程连接

    ### Linux开启MySQL远程连接详解 #### 一、背景介绍 随着云计算和大数据技术的发展,Linux作为服务器操作系统的优势日益凸显,而MySQL作为一款广泛使用的开源关系型数据库管理系统,在Linux环境下更是得到了广泛...

    Mysql 赋权

    ### MySQL赋权详解 在MySQL数据库管理中,“赋权”是一项非常重要的操作,它涉及到对用户账户进行权限分配,确保不同级别的用户能够访问相应的数据库资源。本文将基于提供的标题、描述、标签以及部分内容,深入探讨...

    linux下mysql数据库的安装方法

    ### Linux下MySQL数据库的安装方法 #### 一、引言 在Linux环境下部署MySQL数据库是一项常见且重要的任务。本文将详细介绍几种在Linux操作系统上安装MySQL的具体操作方法,并提供相关的注意事项和配置建议。无论您...

    mysql相关问题总结.docx

    MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于网站开发、企业内部系统以及大数据处理等领域。本文将对MySQL的相关理论和实践技巧进行深入探讨。 首先,我们来了解一下MySQL的连接查询。连接查询...

    mysql百万量级优化

    - 当使用类似`%abc%`这样的通配符查询时,由于需要从任意位置匹配,MySQL可能会执行全表扫描。可以通过全文检索等技术提高查询效率。 7. **避免在`WHERE`子句中使用参数** - 如果在`WHERE`子句中使用参数(如`@...

Global site tag (gtag.js) - Google Analytics