1. like操作符

为在搜索子句中使用通配符,必须使用like操作符。

注意:操作符何时不是操作符?答案是它在作为谓词时。

  1. 百分号(%)通配符

%表示任何字符出现任意次数。

MariaDB [test]> select id,age,province -> from user -> where province like '天%' -> ; +----+------+----------+ | id | age | province | +----+------+----------+ | 3 | 56 | 天津 | | 9 | 33 | 天津 | +----+------+----------+ 2 rows in set (0.00 sec)

  1. 下划线(_)通配符

下划线_,只匹配单个字符而不是多个字符。

使用通配符的技巧: 1.不要过度使用通配符 2.在确实需要使用通配符时,不要用在搜索模式的开始处。影响效率 3.仔细注意通配符的位置

  1. 使用mysql 正则表达式

MariaDB [test]> select id,age,province -> from user -> where age regexp '2' -> ; +----+------+----------+ | id | age | province | +----+------+----------+ | 1 | 22 | 北京 | | 2 | 25 | 广东 | | 10 | 27 | 湖南 | | 11 | 29 | 北京 | | 13 | 24 | 北京 | +----+------+----------+ 5 rows in set (0.00 sec)

5.进行OR匹配

MariaDB [test]> select id,age,province -> from user -> where age regexp '22|27'; +----+------+----------+ | id | age | province | +----+------+----------+ | 1 | 22 | 北京 | | 10 | 27 | 湖南 | +----+------+----------+ 2 rows in set (0.03 sec)

6.匹配几个字符之一

MariaDB [test]> select id,age,province -> from user -> where age regexp '[123]7'; +----+------+----------+ | id | age | province | +----+------+----------+ | 8 | 17 | 河北 | | 10 | 27 | 湖南 | +----+------+----------+ 2 rows in set (0.00 sec)

7.匹配范围

MariaDB [test]> select id,age,province -> from user -> where age regexp '[1-3]7'; +----+------+----------+ | id | age | province | +----+------+----------+ | 8 | 17 | 河北 | | 10 | 27 | 湖南 | +----+------+----------+ 2 rows in set (0.00 sec)

8.匹配特殊字符

注意:特殊字符处理时需进行转义 escaping

\f 换页 \n 换行 \r 回车 \t 制表 \v 纵向制表

匹配(\)为了匹配反斜杠字符本身,需要使用\

9.匹配字符类

[:alnum:] 任意字母和数字 [:alpha:] 任意字符 [:blank:] 空格和制表 [:cntrl:] ASCII 控制字符 [:digit:] 任意数字 [:graph:] 与[:print:]相同,但不包括空格 [:lower:] 任意小写字母 [:print:] 任意可打印字符 [:punct:] 既不在[:alnum:] 又不在 [:cntrl:] 中的任意字符 [:space:] 包括空格在内的任意空白字符 [:upper:] 任意大写字母 [:xdigit:] 任意十六进制数字

10.匹配多个实例

  • 0个或多个匹配
  • 1个或多个匹配 ? 0个或一个匹配 {n} 指定数目的匹配 {n,} 不少于指定数目的匹配 {n,m} 范围匹配

11.定位符

^ 文本开始 $ 文本末尾 [[:<:]] 词的开始 [[:>:]] 词的结尾