`

统配符 * ? _ %

 
阅读更多

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

 

Linux下通配符总结

 

* - 通配符,代表任意字符(0到多个)
? - 通配符,代表一个字符
# - 注释
/ - 跳转符号,将特殊字符或通配符还原成一般符号
| - 分隔两个管线命令的界定
; - 连续性命令的界定
~ - 用户的根目录
$ - 变量前需要加的变量值
! - 逻辑运算中的"非"(not)
/ - 路径分隔符号
>, >> - 输出导向,分别为"取代"与"累加"
' - 单引号,不具有变量置换功能
" - 双引号,具有变量置换功能
` - quote符号,两个``中间为可以先执行的指令
() - 中间为子shell的起始与结束
[] - 中间为字符组合
{} - 中间为命令区块组合
Ctrl+C - 终止当前命令
Ctrl+D - 输入结束(EOF),例如邮件结束的时候
Ctrl+M - 就是Enter
Ctrl+S - 暂停屏幕的输出
Ctrl+Q - 恢复屏幕的输出
Ctrl+U - 在提示符下,将整行命令删除
Ctrl+Z - 暂停当前命令
&& - 当前一个指令执行成功时,执行后一个指令
|| - 当前一个指令执行失败时,执行后一个指令

 

 

 

 

 

其中最常用的是*、?、[]和 ‘。下面举几个简单的例子:

 

1,ls test*             <== *表示后面不论接几个字符都接受(没有字符也接受)

 

2,ls test?            <== ?表示后面当且仅当接一个字符时才接受

 

3,ls test???       <== ???表示一定要接三个字符

 

4,cp  test[1~5]  /tmp      <== test1, test2, test3, test4, test5若存在,则复制到/tmp目录下

 

5,cd  /lib/modules/' uname  -r'/kernel/drivers        <== 被 ' ' 括起来的命令先执行

分享到:
评论

相关推荐

    计算机操作系统上机实验报告(含测试运行结果).doc

    为了实现该命令,我们需要修改del命令的处理程序,使之正确执行统配符 *。 通过本实验,我们可以加深对操作系统文件系统的理解,提高软件设计能力和逻辑思维能力。同时,我们也可以学习文件操作命令的设计方法,...

    GNU_make中文手册.pdf

    - **统配符使用举例**:如何利用通配符匹配多个文件。 - **通配符存在的缺陷**:通配符可能带来的问题及解决方案。 - **函数wildcard**:介绍如何使用wildcard函数来处理文件名中的通配符。 - **目录搜寻**: - ...

    GNU make中文手册

    - **统配符使用举例** - **通配符存在的缺陷** - **函数wildcard** **3.4 目录搜寻** - **一般搜索(变量VPATH)** - **选择性搜索(关键字vpath)** - **目录搜索的机制** - **命令行和搜索目录** - **隐含规则和...

    PL_SQL_Oracle_Or_Jdbc.pdf

    - **统配符**: - `%`:表示任意数量的字符 - `_`:表示指定位置刚好有一个字符 - **逻辑运算符**: - `AND`:结合两个条件 - `OR`:只需满足其中一个搜索条件 ### 二、联接多个表 - **迪卡尔连接**:两个表的...

    PL_SQL_Oracle基础教程

    - **统配符**: - `%`:匹配任何数量的字符。 - `_`:匹配一个字符。 - **逻辑运算符**: - `AND`:两个条件都必须满足。 - `OR`:至少满足一个条件即可。 #### 三、联接多个表 - **迪卡尔连接**:两个表的...

    makefile中文手册

    - **统配符使用举例**:演示如何使用通配符来匹配多个文件。 - **通配符存在的缺陷**:通配符可能匹配到意外的文件。 - **函数wildcard**:使用 `wildcard` 函数来安全地获取匹配的文件列表。 - **目录搜寻**: ...

    Gnu make 中文手册

    - **统配符使用举例**:展示了如何在Makefile规则中利用通配符来匹配一组文件。 - **通配符存在的缺陷**:指出使用通配符时可能会遇到的问题,并提出解决建议。 - **函数wildcard**:介绍了一个有用的函数`...

    grep find 命令用法.doc

    * -name:支持统配符*和?。 * -atime n:搜索在过去 n 天读取过的文件。 * -ctime n:搜索在过去 n 天修改过的文件。 * -group grpoupname:搜索所有组为 grpoupname 的文件。 * -user 用户名:搜索所有文件属主为...

    九月全国统考计算机应用基础模拟真题及答案.pdf

    17. 在搜索或显示文件目录时,若用户选择统配符*.* 其含义为 ______。*.*代表所有文件类型的通配符。正确答案是D.选中所有文。 18. 在 Windows 7 中,“ 画图” 程序默认的文件类型是______。画图程序通常保存为...

    JSP教程(清晰版)

    - **使用统配符查询**:使用LIKE子句进行模糊查询。 **5.4 更新记录**:修改数据库中的现有记录。 **5.5 添加记录**:插入新记录到数据库。 **5.6 删除记录**:从数据库中删除记录。 **5.7 分页显示记录**:实现...

    GNU+make中文手册

    - **4.4.1 统配符使用举例**:给出了具体的示例来说明通配符的使用。 - **4.4.2 通配符存在的缺陷**:讨论了使用通配符可能遇到的问题和限制。 - **4.4.3 函数wildcard**:介绍了wildcard函数的用法,它可以生成...

    《计算机应用基础》试卷三.pdf

    【计算机应用基础】试卷三包含了计算机基础知识的多项选择题、...35. **统配符**:*.* 代表匹配所有类型的文件。 以上知识点涵盖了试卷中的主要计算机基础概念和应用,涉及了计算机系统、网络、数据处理等多个领域。

    GUN make中文手册 ver 3_8

    - **3.4.1 统配符使用举例** 可以使用通配符来匹配多个文件名,例如: ```makefile obj/%.o: src/%.c $(CC) -c $$@ ``` - **3.4.2 通配符存在的缺陷** 通配符可能会匹配到意外的文件,因此需要谨慎使用。 ...

    中文make V3.8手册

    - **统配符使用举例**:`*.o`表示所有以`.o`结尾的文件。 - **通配符存在的缺陷**:可能匹配到不希望的文件。 - **函数wildcard**:获取匹配到的实际文件名列表。 ##### 4.5 目录搜寻 - **一般搜索**:通过`VPATH`...

Global site tag (gtag.js) - Google Analytics