SQLite LIKE 子句
                           
天天向上
发布: 2025-03-04 08:41:40

原创
129 人浏览过

LIKE 子句用于在 SELECTINSERTUPDATEDELETE 语句中进行模糊匹配搜索。它允许根据模式匹配筛选出符合条件的记录。

基本语法

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
  • column_name: 你想进行模糊匹配查询的列名。
  • pattern: 用于匹配的模式,包含特定的通配符。

通配符

在 SQLite 中,LIKE 子句的模式匹配支持以下两种通配符:

  • %:表示零个或多个字符。
  • _:表示单个字符。

1. 使用 % 通配符

% 匹配零个或多个字符。它非常适合用于搜索包含特定子字符串的记录。

示例:

  • 查找名字中包含 John 的所有员工:
  SELECT * FROM employees
  WHERE name LIKE '%John%';
  • 该查询返回所有 name 字段包含 John 的记录,John 可以出现在字符串的任何位置。
  • 查找所有以 J 开头的员工名字:
  SELECT * FROM employees
  WHERE name LIKE 'J%';
  • 该查询返回所有名字以 J 开头的员工,后面可以跟随任意字符。
  • 查找所有以 n 结尾的员工名字:
  SELECT * FROM employees
  WHERE name LIKE '%n';
  • 该查询返回所有名字以 n 结尾的员工。

2. 使用 _ 通配符

_ 匹配单个字符。它用于查找符合特定字符位置的记录。

示例:

  • 查找名字中第二个字符是 o 的员工:
  SELECT * FROM employees
  WHERE name LIKE '_o%';
  • 该查询返回所有名字的第二个字符是 o 的员工。
  • 查找名字的第二个字符是 a,第三个字符是 n 的员工:
  SELECT * FROM employees
  WHERE name LIKE '_an%';
  • 该查询返回所有名字的第二个字符是 a,第三个字符是 n 的员工。

3. 区分大小写

SQLite 的 LIKE 子句在默认情况下是不区分大小写的,除非使用 COLLATE 子句来指定区分大小写的比较方式。

  • 不区分大小写:
  SELECT * FROM employees
  WHERE name LIKE 'john';
  • 该查询会返回 name 字段中包括 johnJohnJOHN 等的记录。
  • 区分大小写(通过 COLLATE):
  SELECT * FROM employees
  WHERE name LIKE 'john' COLLATE NOCASE;
  • 该查询会执行不区分大小写的匹配。

4. 使用 NOT LIKE

NOT LIKE 用于查找不符合指定模式的记录。

示例:

  • 查找名字不包含 John 的员工:
  SELECT * FROM employees
  WHERE name NOT LIKE '%John%';
  • 该查询返回所有 name 字段中不包含 John 的记录。

5. 匹配多个模式

你可以结合多个 LIKE 子句与 ANDOR 运算符来进行复杂的模式匹配。

示例:

  • 查找名字包含 John 且部门为 HR 的员工:
  SELECT * FROM employees
  WHERE name LIKE '%John%' AND department LIKE 'HR';
  • 该查询返回所有名字包含 John 且部门为 HR 的员工。

总结

  • LIKE 用于模糊匹配搜索,可以使用 %_ 通配符来进行模式匹配。
  • % 匹配零个或多个字符,_ 匹配单个字符。
  • 默认情况下,LIKE 不区分大小写,除非使用 COLLATE 子句指定区分大小写。
  • NOT LIKE 用于查找不符合指定模式的记录。
  • LIKE 子句可以与 ANDOR 结合,进行更复杂的匹配操作。

LIKE 是一个非常强大的工具,可以用于灵活的字符串匹配操作。更多详细内容请关注其他相关文章。

发表回复 0

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