123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #补充:使用正则表达式查询
- #1、查询以特定字符或字符串开头的记录
- #字符“^”匹配以特定字符或者字符串开头的文本。
- #例:查询employees表中last_name字段值以字母'b'开头的记录
- SELECT *
- FROM employees
- WHERE last_name REGEXP '^b';
- #2、查询以特定字符或字符串结尾的记录
- #字符“$”匹配以特定字符或者字符串结尾的文本。
- #例:查询employees表中last_name字段值以字母“y”结尾的所有信息。
- SELECT *
- FROM employees
- WHERE last_name REGEXP 'y$';
- #3、用符号“.”来替代字符串中的任意一个字符
- #字符“.”匹配任意一个字符。
- #例:查询employees表中last_name字段值包含字母“a”与“k”且两个字母之间只有一个字母的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP 'a.k';
- #4、使用“*”和“+”来匹配多个字符
- #星号“*”匹配前面的字符任意多次,包括0次。加号“+”匹配前面的字符至少一次。
- #例1:查询employees表中last_name字段值以字母“b”开头且“b”后面出现字母“a”的记录
- SELECT *
- FROM employees
- WHERE last_name REGEXP '^ba*';
- #例2:查询employees表中last_name字段值以字母“b”开头且“b”后面出现字母“a”至少一次的记录
- SELECT *
- FROM employees
- WHERE last_name REGEXP '^ba+';
- #5、匹配指定字符串
- #正则表达式可以匹配指定字符串,只要这个字符串在查询文本中即可,
- #如要匹配多个字符串,多个字符串直接使用分隔符“|”隔开。
- #例1:查询employees表中last_name字段值包含字符串“on”的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP 'on';
- #例2:查询employees表中last_name字段值包含字符串“on”或者“no”的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP 'on|no';#“on|no”之间不能有空格。
- #6、匹配指定字符中的任意一个
- #例:查询employees表中last_name字段值包含字母“o”或者“t”的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP '[ot]';
- #7、匹配指定字符以外的字符
- #“[^字符集合]”匹配不在指定集合中的任何字符。
- #例1:查询employees表中last_name字段值包含字母“a~e”以外的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP '[^a-e]';
- #例2:查询employees表中last_name字段值包含字母“a~z”以外的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP '[^a-z]';
- SELECT 'desk'
- FROM DUAL
- WHERE 'desk' REGEXP '[^abcd]';
- #8、使用{n,}或者{n,m}来指定字符串连续出现的次数
- #“字符串{n,}”表示至少匹配n次前面的字符串;“字符串{n,m}”表示匹配前面的字符串
- #不少于n此,不多于m次。例如,“a{2,}”表示字母a练习出现至少2次,也可以大于
- #2次;“a{2,4}”表示字符a连续出现最少2次,最多不能超过4次。
- #例1:查询employees表中last_name字段值出现字母“a”至少2次的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP 'a{2,}';
- #例2:查询employees表中last_name字段值出现字母“a”最少1次、最多3次的记录。
- SELECT *
- FROM employees
- WHERE last_name REGEXP 'a{1,3}';
|