MariaDB NOT LIKE 运算符使用指南

在 MariaDB 中,NOT LIKE 运算符 LIKE 运算符的否定操作。

注意, MariaDB NOT LIKE 运算符执行整个字符串匹配,不能像正则表达式那样部分匹配。

MariaDB NOT LIKE 语法

NOT LIKE 运算符是一个双目比较运算符,需要两个操作数。 NOT LIKE 运算符语法如下:

expression NOT LIKE pattern [ESCAPE 'escape_char']

说明:

  • expression 可以是一个字段名、值或其他的表达式(比如函数调用、运算等)。
  • pattern 是一个字符串模式。MariaDB 字符串模式支持两个通配符: %_
    • % 匹配零或多个任意字符。
    • _ 匹配单个任意字符。
    • 如果需要匹配通配符,则需要使用 \ 转义字符,如 \%\_
    • 使用通配符匹配文本时,不区分字母大小写。
  • ESCAPE 'escape_char' 是可选的,它用来指定新的转义字符。

如果 expressionpattern 匹配,NOT LIKE 运算符返回 0,否则返回 1

比如:

  • a% 匹配以字符 a 开头的任意长度的字符串。
  • %a 匹配以字符 a 结尾的任意长度的字符串。
  • %a% 匹配包含字符 a 的任意长度的字符串。
  • %a%b% 匹配同时包含字符 abab 前面的任意长度的字符串。
  • a_ 匹配以字符 a 开头长度为 2 字符串。
  • _a 匹配以字符 a 结尾长度为 2 字符串。

MariaDB NOT LIKE 示例

%

% 匹配零或多个任意字符,下面的语句展示了 % 通配符的用法:

SELECT
  'abc' LIKE 'a%',
  'abc' NOT LIKE 'a%';

输出:

+-----------------+---------------------+
| 'abc' LIKE 'a%' | 'abc' NOT LIKE 'a%' |
+-----------------+---------------------+
|               1 |                   0 |
+-----------------+---------------------+

这里,a% 模式表示 a 开头的任意长度的字符串,因此与 abc 匹配。

再来一个:

SELECT
  'abc' LIKE '%b%',
  'abc' NOT LIKE '%b%';

输出:

+------------------+----------------------+
| 'abc' LIKE '%b%' | 'abc' NOT LIKE '%b%' |
+------------------+----------------------+
|                1 |                    0 |
+------------------+----------------------+

这里,%b% 模式表示包含 b 的任意长度的字符串,因此与 abc 匹配。

_

_ 匹配单个任意字符,下面的语句展示了 _ 通配符的用法:

SELECT
  'ab' LIKE 'a_',
  'ab' NOT LIKE 'a_',
  'ab' LIKE '_b',
  'ab' NOT LIKE '_b';

输出:

+----------------+--------------------+----------------+--------------------+
| 'ab' LIKE 'a_' | 'ab' NOT LIKE 'a_' | 'ab' LIKE '_b' | 'ab' NOT LIKE '_b' |
+----------------+--------------------+----------------+--------------------+
|              1 |                  0 |              1 |                  0 |
+----------------+--------------------+----------------+--------------------+

数据库示例

下面的示例使用了来自 Sakila 示例数据库actor 表。

SELECT * FROM actor
WHERE first_name NOT LIKE 'P%'
LIMIT 10;

输出:

+----------+------------+--------------+---------------------+
| actor_id | first_name | last_name    | last_update         |
+----------+------------+--------------+---------------------+
|        2 | NICK       | WAHLBERG     | 2006-02-15 04:34:33 |
|        3 | ED         | CHASE        | 2006-02-15 04:34:33 |
|        4 | JENNIFER   | DAVIS        | 2006-02-15 04:34:33 |
|        5 | JOHNNY     | LOLLOBRIGIDA | 2006-02-15 04:34:33 |
|        6 | BETTE      | NICHOLSON    | 2006-02-15 04:34:33 |
|        7 | GRACE      | MOSTEL       | 2006-02-15 04:34:33 |
|        8 | MATTHEW    | JOHANSSON    | 2006-02-15 04:34:33 |
|        9 | JOE        | SWANK        | 2006-02-15 04:34:33 |
|       10 | CHRISTIAN  | GABLE        | 2006-02-15 04:34:33 |
|       11 | ZERO       | CAGE         | 2006-02-15 04:34:33 |
+----------+------------+--------------+---------------------+

结论

在 MariaDB 中,NOT LIKE 运算符 LIKE 运算符的否定操作。