MySQL NOT LIKE运算符
MySQL提供了一种查找具有特定值的匹配记录和非匹配记录的方法。当我们想要查找需要在电子表格上编辑或报告的记录时,此功能非常有优势。
MySQL中的NOT LIKE运算符用于模式匹配。它 通过给定的值比较列,并返回与NOT LIKE子句中的值不匹配的结果 。如果语句找到匹配,它将返回0。否则,它将返回1。我们可以使用此运算符执行LIKE运算符的否定。该语句的主要优点是使用通配符字符搜索一系列值或与模式匹配的值。
语法
以下是在MySQL中使用此运算符的基本语法:
expression NOT LIKE pattern [ESCAPE 'escape_char']
在这个语法中, expression 是一个输入字符串,我们将在其上执行搜索来匹配正则表达式。而 pattern 表示我们正在测试的正则表达式的字符串。可选的 ESCAPE子句 用于指定转义字符。如果我们不指定这个子句,默认情况下,它是\。
上述运算符等同于以下语法:
NOT (expression LIKE pattern [ESCAPE 'escape_char'])
这种语法通常与 SELECT 语句一起使用,如下所示:
SELECT name FROM table_name WHERE column_name NOT LIKE 'pattern';
让我们通过实例来了解这个运算符在MySQL中如何工作。
示例
下面的语句是”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;
以下是结果: