MySQL REGEXP运算符
MySQL中的REGEXP运算符用于模式匹配。它与输入字符串中的给定模式进行比较,并返回与模式匹配的结果。如果此运算符找到匹配项,则结果为1。否则,结果为0。此运算符与REGEXP_LIKE()函数的工作方式相同。
语法
在MySQL中使用此运算符的基本语法如下:
expression REGEXP pattern ;
在这个语法中, expression 是一个输入字符串,我们将在这个字符串上进行正则表达式的匹配搜索。而 pattern 表示我们测试的正则表达式。这个语法通常与SELECT语句一起使用。
让我们通过例子来理解这个运算符在MySQL中的工作原理。
例子
下面的语句是最基本的正则表达式,我们没有使用任何特殊字符。这意味着我们只是使用了一个字符串,并比较输入字符串的任何部分是否匹配模式,如果匹配就返回一个匹配结果。
mysql> SELECT
'Corner' REGEXP 'Corn' AS 'Match',
'Cheese' REGEXP 'Corn' AS 'Not-Match';
这是结果:
假设我们有一个名为 employee 的表,其中包含以下数据。现在,我们将根据这个表的数据演示各种示例。
如果我们想要 按名字以j或s开头搜索员工 ,我们可以按如下方法操作:
mysql> SELECT * FROM employee WHERE Name REGEXP '^[js]';
执行该语句,我们将得到期望的结果。请参见下方的输出:
如果我们想要获取 名字恰好包含四个字符的员工 ,我们需要使用 ‘^’ 和 ‘$’ 元字符 。这些字符匹配员工名字的 开头和结尾 ,并重复{4}次之间的任意字符’.’,如下面的语句所示:
mysql> SELECT * FROM employee WHERE Name REGEXP '^.{4}$';
执行该语句后,我们将得到期望的结果。请查看以下输出:
如果我们想要获取职称中包含’er’字符的员工详细信息,我们可以使用以下查询:
mysql> SELECT * FROM employee WHERE Designation REGEXP 'er';
执行该语句,我们将得到所期望的结果。查看下面的输出:
如果我们想要获取 员工的姓名和职务,姓名包含p或s字母 ,我们可以使用以下查询语句:
mysql> SELECT Name, Designation FROM employee WHERE Name REGEXP 'p|s';
执行该语句,我们将获得期望的结果。请参阅下面的输出: