MySQL NOT LIKE运算符

MySQL 提供了一种方法来查找具有特定值的两种类型的记录,无论是否匹配。当我们要查找需要在电子表格上编辑或报告的记录时,此功能非常有用。

MySQL 中的 NOT LIKE 运算符用于模式匹配。它根据给定值比较列,并返回与 NOT LIKE 子句中的值不匹配的结果。如果语句找到匹配,则返回 0。否则,返回 1。我们可以使用该运算符来执行 LIKE 运算符的取反。此语句的主要优点是使用通配符搜索与模式匹配的一系列值或值。

一、MySQL NOT LIKE运算符 语法

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

expression NOT LIKE pattern [ESCAPE 'escape_char']  

在这种语法中,expression 是一个输入字符串,我们将在其上执行搜索以匹配正则表达式。而模式表示我们正在测试字符串的正则表达式。可选的ESCAPE 子句用于指定转义字符。如果我们不指定这个子句,默认是\。

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

NOT (expression LIKE pattern [ESCAPE 'escape_char'])   

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

SELECT name FROM table_name WHERE column_name NOT LIKE 'pattern'; 

二、MySQL NOT LIKE运算符 示例

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

mysql> SELECT   
'Javatpoint' LIKE 'Java%' AS 'Match',  
'Javatpoint' NOT LIKE 'Java%' AS 'Not-Match';  

结果如下:

如果我们想转义任何通配符(_ 和 %),我们需要使用反斜杠字符 (\)。请参阅下面的语句,其中将使用和不使用转义字符进行搜索:

SELECT   
  'usr+123' NOT LIKE 'usr_123' AS 'Without escape',  
  'usr+123' NOT LIKE 'usr\_123' AS 'With escape'; 

结果如下:

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

如果我们想获取姓名不以'A'字母开头的学生详细信息,我们可以使用如下语句:

mysql> SELECT * FROM student_info   
WHERE stud_name   
NOT LIKE 'A%';  

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

下面的 MySQL 语句从表 student_info 中返回那些主题名称与 LIKE 运算符指定的模式类似的行:

mysql> SELECT stud_name, subject, marks FROM student_info            
WHERE subject NOT LIKE 'M_t_s';  

我们将获得以下输出,我们可以看到该语句不返回包含上述模式的记录。

如果我们想获取学科名称不以 's' 字符结尾的学生详细信息,我们可以使用以下语句来执行此操作:

mysql> SELECT stud_name, subject, marks FROM student_info            
WHERE subject NOT LIKE '%s';  

执行这条语句后,我们会得到想要的结果:

下面的示例显示了如何将 NOT LIKE 运算符与数字表达式一起使用:

mysql> SELECT   
  5678 NOT LIKE '56%' AS Result1,  
  5678 NOT LIKE '56_' AS Result2;  

结果如下:

热门文章

优秀文章