MySQL 在不区分大小写的搜索中使用 LIKE

Raymond Peter 2023年1月30日 2022年5月13日
  1. 在 MySQL 中使用 LIKE 进行不区分大小写的搜索
  2. MySQL 中区分大小写的搜索
  3. MySQL 中的正则表达式
MySQL 在不区分大小写的搜索中使用 LIKE

本教程文章将向你展示如何使用 LIKE 运算符来搜索列。我们将向你展示如何正确使用它来包含满足特定标准的所有结果,无论值是大写还是小写。

在 MySQL 中使用 LIKE 进行不区分大小写的搜索

搜索表时,搜索表时总是在 WHERE 之后使用 LIKE 运算符。

这在搜索你不确定的术语时特别有用,例如前缀或字母模式,或者你是否想要包含满足特定条件的多个实例。

SELECT 语句之后,指定要搜索的表中的哪一列,添加 LIKE 运算符,后跟以下通配符:

  • % 通配符将查找以位于字母之后的字母开头的值。同样,如果% 符号放在字母之前,它将查找以字母结尾的值。
  • 下划线 (_) 通配符用于在使用 % 符号后将搜索限制为一个值。

你可以以不同的方式使用上述内容来产生不同的结果。下面的示例展示了如何使用两个通配符来搜索术语。

 CREATE TABLE car_models (
  brand TEXT NOT NULL,
  model TEXT NOT NULL
);
 
INSERT INTO car_models VALUES ('Toyota', 'Camry');
INSERT INTO car_models VALUES ('toyota', 'Corolla');
INSERT INTO car_models VALUES ('toyota', 'corolla');
INSERT INTO car_models VALUES ('Ford', 'Prefect');
INSERT INTO car_models VALUES ('Ford', 'fiesta');
 
SELECT * FROM car_models WHERE car_models.model LIKE '%cor%'

以上将仅返回包含该序列中字母 cor 的行。通过以 % 符号开始和结束,搜索仅限于按该顺序包含字母的单词。

| brand |  model  |
|-------|---------|
|toyota | Corolla |
|toyota | corolla |

搜索忽略大小写,仅搜索符合条件的值。你还可以运行以下语句,该语句返回包含字母 c 的所有模型。

SELECT * FROM car_models WHERE car_models.model LIKE '%C%'

输出:

| brand |  model  |
|-------|---------|
|Toyota |  Camry  |
|toyota | Corolla |
|toyota | corolla |
|Ford   | Prefect |

以下返回所有带有字母 c 的模型。但是,如果你想更具体一些,可以仅在字母 c 之后放置 % 符号,以返回以 c 开头的模型。

SELECT * FROM car_models WHERE car_models.model LIKE 'C%'

输出:

| brand |  model  |
|-------|---------|
|Toyota |  Camry  |
|toyota | Corolla |
|toyota | corolla |

MySQL 中区分大小写的搜索

如果要进行区分大小写的搜索,可以在 LIKE 运算符前添加 BINARY,搜索将区分大小写。

SELECT * FROM car_models WHERE car_models.model LIKE BINARY 'c%'

输出:

| brand |  model  |
|-------|---------|
|toyota | corolla |

所有以大写 C 开头的模型都被排除在搜索之外。

MySQL 中的正则表达式

值得学习如何使用正则表达式进行更具体的搜索。这些包括更多的特殊字符,如% 符号,允许你在搜索中执行更多操作。

它由 * 符号组成,允许出现以下情况,即它后面的值可以出现多次或根本不出现。另一方面,+ 号表示后面的字符需要至少出现一次。

REGEXPREGEXP_LIKE() 也可以在 MySQL 中用于行进特定模式。