如何使用like模糊查询_mysql模糊匹配技巧

MySQL中LIKE模糊查询需正确使用%和_通配符,注意前导%导致索引失效,推荐左匹配’prefix%’以利用索引,慎用’%suffix’,并防范SQL注入与NULL值陷阱。

如何使用like模糊查询_mysql模糊匹配技巧

MySQL 中的 LIKE 是最常用的模糊查询方式,核心在于正确使用通配符和注意性能陷阱。

LIKE 基础语法与通配符含义

LIKE 后跟一个模式字符串,支持两个关键通配符:

  • %:匹配任意长度的字符(包括零个字符),例如 'abc%' 匹配以 abc 开头的所有字符串
  • _:匹配单个任意字符,例如 'a_c' 匹配 abca2c,但不匹配 acabcd

注意:默认区分大小写取决于字段的排序规则(collation),如需忽略大小写,可使用 LOWER() 或确保列使用 utf8mb4_general_ci 类型排序规则。

常用模糊匹配场景写法

根据搜索需求选择合适模式:

Mootion

Mootion

Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。

下载

  • 查包含某子串:WHERE name LIKE '%keyword%'
  • 查以某字符串开头:WHERE name LIKE 'prefix%'(推荐,可能走索引)
  • 查以某字符串结尾:WHERE name LIKE '%suffix'(无法使用普通索引,慎用)
  • 查固定长度+部分已知:WHERE code LIKE 'A_202_'(匹配如 A12024A92021

若需匹配字面意义的 %_,用 ESCAPE 指定转义符,例如:LIKE '100/%' ESCAPE '/'

提升 LIKE 查询性能的关键点

模糊查询容易拖慢数据库,尤其大数据量时:

  • 前导通配符(如 '%abc''%abc%')会使 B+ 树索引失效,只能全表扫描
  • 只有 'abc%' 这类左匹配才可能利用索引(前提是字段有索引且未在函数中使用)
  • 考虑替代方案:对高频模糊检索字段,可建立red”>全文索引(FULLTEXT)配合 MATCH ... AGAINST,更适合自然语言搜索
  • 数据量极大时,引入 Elasticsearch 或 RedisSearch 等专用检索引擎更高效

避免常见错误

实际写 SQL 时常踩这些坑:

  • 忘记加引号导致语法错误:WHERE name LIKE abc% ❌ 应为 WHERE name LIKE 'abc%'
  • LIKE 中误用变量拼接引发 SQL 注入(尤其 PHP/Java 拼接字符串时),务必使用预处理参数化查询
  • 对 NULL 值使用 LIKE 返回 FALSE,需单独判断:WHERE name IS NULL OR name LIKE '%x%'
  • 中文模糊搜索时,确认字符集是 utf8mb4,避免乱码或匹配失败

https://www.php.cn/faq/2024474.html

发表回复

Your email address will not be published. Required fields are marked *