SQL中LIKE通配符详解与正确使用姿势

许南星
许南星
发布时间:2026-10-14| 6人浏览过
原创

在SQL结构化查询语言中,`LIKE` 语句是实现字符串模糊检索的核心工具。它主要用于在字符型字段中查找包含特定子串或符合某种模式的记录。理解并正确运用通配符,是编写高效且准确的查询条件的前提。

LIKE语句的基本语法与目的

`LIKE` 操作符通常配合 `SELECT ... FROM ... WHERE ...` 语句使用,其核心目的是在不明确知道完整字符串的情况下进行模式匹配。基本语法格式为:

SELECT * FROM table_name 
WHERE column_name LIKE pattern;

其中,`column_name` 是待匹配的字符字段,`pattern` 则是结合了普通字符和特殊通配符的搜索模式。该功能仅适用于文本(如 VARCHAR、CHAR)数据类型。

主流数据库的通配符规范与兼容性问题

虽然“通配符”的概念在所有数据库中通用,但不同数据库系统对 `LIKE` 的支持符号存在显著差异。这也是初学者最容易混淆的地方:

  • ANSI SQL 标准:推荐使用 % 代表任意数量的字符(包括0个),使用 _ 代表单个字符。
  • Microsoft Access / Jet SQL:历史上常用 * 代表任意数量字符,用 ? 代表单个字符。

风险提示:许多老教程会混用 % 与 *。如果在标准 MySQL、PostgreSQL 或 Oracle 环境中直接输入 name like "*张",系统往往会将其视为字面量(即寻找带有星号的名称)或报错。务必根据实际使用的数据库类型选择正确的通配符。

核心通配符使用场景

第1步:掌握多字符匹配(% 与 *)

这是最频繁的查询需求,用于检索中间包含关键词的记录。

  • % (标准):匹配零个或多个任意字符。
    例如:select * from users where name like '%明%' 可匹配到 “小明”、“李明”、“大明”。
  • * (非标准/旧版):在部分封闭系统中等同于 %。但在大多数现代关系型数据库中,它没有此通配符含义。

第2步:掌握单字符匹配 (_ 与 ?)

当需要固定位置的字变时,使用单字符通配符。

  • _ (标准):严格匹配恰好一个字符。
    例如:name like '李_a_' 可以匹配 “李文博”,但不匹配 “李二宝”。
  • ? (非标准):同等于 _,主要用于 Access 等旧式环境。

第3步:组合类型与范围排除

除了简单的占位,还可以利用方括号 [] 定义字符集或范围:

  1. 指定范围:%[a-z]% 匹配包含任意小写字母的行;%[0-9]% 匹配包含数字的行。
  2. 字符排除:[!a-z] 或 [^a-z](视库而定)表示不在这个范围内的任意单个字符。

常见误区排错:为什么有时候用 "%" 比用 "*" 更准确?

文章开头提到的案例中,如果数据库支持双端展开:
假设表数据如下:

namesex
张小明男
李明天男
王五男

若执行 like '*明*' 或 like '%明%',在完全兼容的环境下两者都能返回 “张小明” 和 “李明天”。然而,如果你在某些不支持双端替换的环境中尝试两端均用旧式通配符替代(如仅在特定老旧环境下使用星号),往往无法得到预期的跨行搜索结果。因此,在编写代码时建议优先采用广泛支持的 % 进行全段模糊搜索。

以上就是SQL中LIKE语句及通配符用法的详细内容,更多关于SQL基础查询技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。