正则表达式是一种强大的文本匹配工具,MySQL也支持使用正则表达式进行匹配查询。
使用正则表达式查询可使用REGEXP或RLIKE关键字,例如:
SELECT * FROM 表名 WHERE 列名 REGEXP '^A.*e$';
SELECT * FROM 表名 WHERE 列名 RLIKE '^A.*e$';
上述代码查询表名为“表名”中,列名为“列名”的行,其中列名匹配以“A”开头,以“e”结尾的数据。
MySQL支持的正则表达式语法包括:
. 匹配任意一个字符(除了换行符 \n)
[...] 匹配括号内的任意一个字符
[^...] 匹配不在括号内的任意一个字符
^ 匹配字符串开头
$ 匹配字符串结尾
* 匹配前一个字符0次或多次
+ 匹配前一个字符1次或多次
? 匹配前一个字符0次或1次
{n} 匹配前一个字符n次
{n,} 匹配前一个字符至少n次
{n,m} 匹配前一个字符n到m次
| 匹配左侧或右侧的字符
()
以下是一些查询数据时使用的正则表达式:
查询包含字符串“mysql”的行:SELECT * FROM 表名 WHERE 列名 REGEXP 'mysql';
查询以“mysql”开头字符串的行:SELECT * FROM 表名 WHERE 列名 REGEXP '^mysql';
查询以“mysql”结尾字符串的行:SELECT * FROM 表名 WHERE 列名 REGEXP 'mysql$';
查询以任意字符开始,以“mysql”结尾的字符串行:SELECT * FROM 表名 WHERE 列名 REGEXP '^.*mysql$';
查询以数字开头的字符串行:SELECT * FROM 表名 WHERE 列名 REGEXP '^[0-9]+.*';
查询不包含字符串“mysql”的行:SELECT * FROM 表名 WHERE 列名 NOT REGEXP 'mysql';
查询包含大小写字母及数字的行:SELECT * FROM 表名 WHERE 列名 REGEXP '[a-zA-Z0-9]';
通过正则表达式查询数据,可以更加灵活地匹配数据,提高数据查询的效率。