MariaDB LIKE 运算符使用指南

在 MariaDB 中,LIKE 运算符将给定的字符串与给定的模式进行匹配,并返回匹配结果。

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

LIKE 运算符的否定操作是 NOT LIKE

MariaDB LIKE 语法

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

expression LIKE pattern [ESCAPE 'escape_char']

说明:

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

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

比如:

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

MariaDB LIKE 示例

%

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

SELECT 'abc' LIKE 'a%';

输出:

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

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

再来一个:

SELECT 'abc' LIKE '%b%';

输出:

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

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

_

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

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

输出:

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

数据库示例

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

SELECT * FROM actor WHERE first_name LIKE 'P%';

输出:

+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update         |
+----------+------------+-----------+---------------------+
|        1 | PENELOPE   | GUINESS   | 2006-02-15 04:34:33 |
|       46 | PARKER     | GOLDBERG  | 2006-02-15 04:34:33 |
|       54 | PENELOPE   | PINKETT   | 2006-02-15 04:34:33 |
|      104 | PENELOPE   | CRONYN    | 2006-02-15 04:34:33 |
|      120 | PENELOPE   | MONROE    | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+

性能

包含 LIKE 运算符的查询的运行速度可能比其他查询慢得多,除非您确实需要它,否则您可能应该避免使用运算符。使用 % 作为前缀可能特别慢。

结论

在 MariaDB 中,LIKE 运算符将给定的字符串与给定的模式进行匹配,并返回匹配结果。