Skip to content

SQL LIKE

SQL LIKE 运算符用于在 WHERE 子句中进行模糊匹配,通常与通配符一起使用,用于查找列中包含指定模式的记录。

LIKE 语法

sql
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

通配符

LIKE 运算符通常与以下通配符一起使用:

  • %:表示任意长度的任意字符(包括 0 个字符)
  • _:表示单个任意字符

示例

假设我们有一个名为 students 的表,包含以下数据:

idnameagegrade
1张三18高三
2李四17高二
3王五19高三
4赵六16高一
5钱七18高三
6张小明17高二
7李华18高三

示例 1:查找以 "张" 开头的名字

sql
SELECT * FROM students WHERE name LIKE '张%';

结果:

idnameagegrade
1张三18高三
6张小明17高二

示例 2:查找以 "三" 结尾的名字

sql
SELECT * FROM students WHERE name LIKE '%三';

结果:

idnameagegrade
1张三18高三

示例 3:查找包含 "四" 的名字

sql
SELECT * FROM students WHERE name LIKE '%四%';

结果:

idnameagegrade
2李四17高二

示例 4:查找名字长度为 2 个字符且以 "张" 开头的记录

sql
SELECT * FROM students WHERE name LIKE '张_';

结果:

idnameagegrade
1张三18高三

示例 5:查找年级包含 "高" 的记录

sql
SELECT * FROM students WHERE grade LIKE '%高%';

结果:

idnameagegrade
1张三18高三
2李四17高二
3王五19高三
4赵六16高一
5钱七18高三
6张小明17高二
7李华18高三

NOT LIKE

使用 NOT LIKE 可以查找不匹配指定模式的记录:

sql
SELECT * FROM students WHERE name NOT LIKE '张%';

结果:

idnameagegrade
2李四17高二
3王五19高三
4赵六16高一
5钱七18高三
7李华18高三

注意事项

  1. 性能考虑:使用 LIKE 运算符(特别是以 % 开头的模式)可能会导致全表扫描,影响查询性能。对于大型表,建议使用索引或其他优化方法。

  2. 大小写敏感性:在某些数据库系统中,LIKE 运算符是大小写敏感的,而在其他系统中则不是。例如,在 MySQL 中,默认情况下 LIKE 是大小写不敏感的,而在 PostgreSQL 中是大小写敏感的。

  3. 转义字符:如果需要匹配通配符本身(如 %_),需要使用转义字符。不同的数据库系统可能有不同的转义字符,例如在 MySQL 中使用 \ 作为转义字符。

小结

SQL LIKE 运算符是一种用于模糊匹配的强大工具,通过与通配符一起使用,可以灵活地查找符合特定模式的记录。在使用时,需要注意性能影响和大小写敏感性等问题。