MySQL RLIKE操作符
MySQL中的RLIKE操作符用于模式匹配。它用于确定给定的字符串是否与正则表达式匹配。 如果字符串与正则表达式匹配,则返回1;如果没有找到匹配项,则返回0。 此操作符的结果与 REGEXP_LIKE() 函数相似。因此,RLIKE操作符是REGEXP_LIKE()函数的同义词。
语法
以下是在MySQL中使用此操作符的基本语法:
expression RLIKE pattern
在这个语法中, expression 是一个输入字符串,我们将对其进行正则表达式匹配搜索。而 pattern 则表示我们正在测试的字符串的正则表达式。
这个语法通常与SELECT语句一起使用,如下所示:
SELECT column_list FROM table_name WHERE column_name RLIKE 'pattern';
让我们通过例子来了解这个操作符在MySQL中的工作原理。
例子
下面的语句是RLIKE操作符的最基本示例。在这里,我们只使用了一个字符串,并比较输入字符串的任何部分是否与模式匹配以得到结果。
mysql> SELECT 'Javatpoint' RLIKE '^Java' AS 'Result';
这里是结果:
假设我们有一个名为 student_info 的表,其中包含以下数据。我们将根据这个表的数据进行各种示例演示。
如果我们想获得科目以字母”s”或”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 是一个输入字符串,我们将对其进行搜索以匹配正则表达式。而 pattern 表示我们正在测试字符串的正则表达式。
这个语法通常与 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';
这是输出结果:
让我们根据上面的学生信息表看一些其他例子 .
下面的语句返回 不以“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} 次重复的任意字符 ‘.’。请参见下面的输出: