-基础笔记-
MySQL like 子句和正则表达式的使用
MySQL 可以通过 LIKE …% 来进行模糊匹配,也可以使用 REGEXP 操作符来进行正则表达式匹配

LIKE

当需要获取 WHERE 字段中包含的匹配记录,就需要在 WHERE 子句中使用 LIKE 子句
WHERE 子句中可以使用 = 来设定获取数据的条件,LIKE 子句中使用百分号 % 字符来表示任意字符.如果没有使用 %, LIKE子句与 = 的效果是一样的
可以使用 AND 或者 OR 指定一个或多个条件,可以在 DELETEUPDATE 命令中使用 WHERE...LIKE 子句来指定条件

SELECT field1, field2,...fieldN
FROM table_name
WHERE field1 LIKE `condition` [AND [OR]] filed2 = 'somevalue'

与 WHERE 条件结合

'%a'     //以a结尾的数据
'a%' //以a开头的数据
'%a%' //含有a的数据
'_a_' //三位且中间字母是a的
'_a' //两位且结尾字母是a的
'a_' //两位且开头字母是a的

正则表达式

MySQL 正则模式可应用于 REGEXP 操作符中
MySQL 中正则表达式匹配不区分大小写,如希望区分大小写,可使用 binary 关键字

模式 描述
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
[...] 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
[^...] 负值字符集合。匹配未包含的任意字符。例如, ‘abc‘ 可以匹配 “plain” 中的’p’。
`p1 p2 p3` 匹配 p1 或 p2 或 p3。例如,’z food’ 能匹配 “z” 或 “food”。’(z f)ood’ 则匹配 “zood” 或 “food”。
* 匹配前面的子表达式零次或多次。例如,zo 能匹配 “z” 以及 “zoo”。 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,m} m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次

示例

任意字母数字:[a-zA-Z0-9]
任意十六进制:[a-fA-F0-9]
任意字符:[a-zA-Z]
空格和制表符:[\t]
任意空白字符:[\f\n\r\t\v] (换页\换行\回车\制表\纵向制表)
x OR y:”x|y”
email:”@163[.,]com$“
x 至少出现一次,最多出现三次:”x{1,3}”