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'是可选的,它用来指定新的转义字符。
如果 expression 与 pattern 匹配,NOT LIKE 运算符返回 0,否则返回 1。
比如:
a%匹配以字符a开头的任意长度的字符串。%a匹配以字符a结尾的任意长度的字符串。%a%匹配包含字符a的任意长度的字符串。%a%b%匹配同时包含字符a和b且a在b前面的任意长度的字符串。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 运算符的否定操作。