MySQL RLIKE运算符

MySQL 中的 RLIKE 运算符用于模式匹配。它用于确定给定的字符串是否与正则表达式匹配。如果字符串与正则表达式匹配,则返回 1,如果未找到匹配项,则返回 0。此运算符返回与REGEXP_LIKE()函数类似的结果。因此 RLIKE 运算符是 REGEXP_LIKE() 函数的同义词。

一、MySQL RLIKE运算符 语法

以下是在 MySQL 中使用此运算符的基本语法:

expression RLIKE pattern  

在这种语法中,expression是一个输入字符串,我们将在其上执行搜索以匹配正则表达式。而pattern代表正则表达式我们正在为此测试字符串。

此语法通常与SELECT 语句一起使用,如下:

SELECT column_list FROM table_name WHERE column_name RLIKE 'pattern';   

让我们了解这个运算符在MySQL中是如何工作的通过例子。

二、MySQL RLIKE运算符 示例

以下语句是 RLIKE 运算符的最基本示例。在这里,我们刚刚使用了一个字符串并比较输入字符串的任何部分是否与模式匹配以获得结果。

mysql> SELECT 'Javatpoint' RLIKE '^Java' AS 'Result';  

结果如下:

假设我们有一个名为student_info的表,其中包含以下数据。我们将根据此表数据演示各种示例。

如果我们想获取科目以“s or y”字母结尾的学生姓名、科目和分数,我们可以使用如下语句获取这些详细信息:

mysql> SELECT stud_name, subject, marks  
FROM student_info   
WHERE subject RLIKE 's$|y$';  

执行语句,我们会得到想要的结果。请参阅以下输出:

下面的语句是另一个使用正则表达式字符点 (.)的示例,它指定不能有任何字符、一个字符或多个字符来代替它:

mysql> SELECT stud_name, subject, marks  
FROM student_info   
WHERE subject RLIKE 'sci.nce';  

执行语句,我们会得到想要的结果。请参阅以下输出:

三、MySQL NOT RLIKE 运算符

它是用于模式匹配的 RLIKE 运算符的否定。此运算符确定输入字符串中是否不存在模式。如果字符串与正则表达式不匹配,则返回 0,如果找到匹配项,则返回 1。我们可以按如下方式使用此运算符:

expression NOT RLIKE pattern  

上面的操作符等价于下面的语法:

NOT (expression RLIKE pattern)   

在这种语法中,expression是一个输入字符串,我们将在其上执行搜索以匹配正则表达式。而模式表示我们正在测试字符串的正则表达式。

此语法通常与SELECT语句一起使用,如下所示:

SELECT column_list FROM table_name WHERE column_name NOT RLIKE 'pattern';    

让我们通过示例了解这个运算符在 MySQL 中是如何工作的。

示例

以下语句是 NOT RLIKE 运算符的最基本示例。在这里,我们刚刚使用了一个字符串,并比较了输入字符串的任何部分是否与模式不匹配。

mysql> SELECT 'Javatpoint' NOT RLIKE '^Java' AS 'Result';  

我们将得到以下结果。这里模式匹配,因为输入字符串以 Java 开头。由于我们使用 NOT RLIKE 运算符,因此它返回否定结果 (0)。

上面的语句相当于这样做:

mysql> SELECT NOT ('Javatpoint' RLIKE '^Java') AS 'Result';  

这是另一个给出结果 1 的示例。它表示字符串与给定的模式不匹配。

mysql> SELECT   
  'Javatpoint' RLIKE '^C | e$' AS 'RLIKE',  
  'Javatpoint' NOT RLIKE '^C | e$' AS 'NOT RLIKE';  

输出结果:

让我们看看基于上表 student_info 的其他示例。

以下语句返回主题不以“s 或 y”字母结尾的学生姓名、学科和分数:

mysql> SELECT stud_name, subject, marks  
FROM student_info   
WHERE subject NOT RLIKE 's$|y$';  

执行语句,我们会得到想要的结果。请参阅以下输出:

以下语句返回名称不包含四个字符的学生详细信息:

mysql> SELECT * FROM student_info   
WHERE stud_name NOT RLIKE '^.{4}$';  

这里我们使用'^' 和'$ 元字符来匹配学生姓名的开头和结尾,并重复任何字符'.' {4} 次。介于两者之间。请参阅以下输出:

热门文章

优秀文章