#补充:使用正则表达式查询 #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}';