SQL学习之like子句

参考源

SQL like 子句

SQL 中的 like 子句用于在 where 子句中搜索列中的指定模式

SELECT column_name FROM table_name WHERE column_name LIKE pattern;

注:
pattern 是一个合法的模式字符串,有很多种模式,但最常用的也是最容易记住的就是百分号 ( % ) 可以代替任意字符

示例数据

CREATE DATABASE IF NOT EXISTS hardy_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

USE hardy_db;

DROP TABLE IF EXISTS lesson;

CREATE TABLE lesson (
	id INT ( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR ( 32 ) DEFAULT '',
	views INT ( 11 ) NOT NULL DEFAULT 0,
	created_at TIMESTAMP 
);

INSERT INTO lesson ( id, name, views, created_at )
VALUES
	( 1, 'Python3 基础教程', 981, '2019-03-18 13:52:03' ),
	( 2, 'JavaScript 基础教程', 73, '2019-03-18 16:03:32' ),
	( 3, 'Ruby 基础教程', 199, '2019-04-01 06:16:14' ),
	( 4, 'SQL 基础教程', 533, '2019-05-02 08:13:42' ),
	( 5, 'Linux 基础教程', 1000, '2019-06-02 08:13:42' );

基本使用

如果不使用任何通配符,那么 like 的效果相当于 =操作符

  1. 下面的 SQL 语句选取 namePython3 基础教程 的课程
select * from lesson where name like 'Python3 基础教程';

输出结果如下:

mysql> select * from lesson where name like 'Python3 基础教程';
+----+------------------+-------+---------------------+
| id | name             | views | created_at          |
+----+------------------+-------+---------------------+
|  1 | Python3 基础教程 |   981 | 2019-03-18 13:52:03 |
+----+------------------+-------+---------------------+
1 row in set (0.00 sec)

百分号 ( % )可以代替任何任意数量的字符

  1. 所以下面的 SQL 语句选取 name 以 S 开头的课程
select * from lesson where name like 'S%';

运行结果如下:

mysql> select * from lesson where name like 'S%';
+----+--------------+-------+---------------------+
| id | name         | views | created_at          |
+----+--------------+-------+---------------------+
|  4 | SQL 基础教程 |   533 | 2019-05-02 08:13:42 |
+----+--------------+-------+---------------------+
1 row in set (0.00 sec)
  1. 下面的 SQL 语句选取name 以字符串 “教程” 结尾的所有课程
select * from lesson where name like '%教程';

输出结果如下

mysql> select * from lesson where name like '%教程';
+----+---------------------+-------+---------------------+
| id | name                | views | created_at          |
+----+---------------------+-------+---------------------+
|  1 | Python3 基础教程    |   981 | 2019-03-18 13:52:03 |
|  2 | JavaScript 基础教程 |    73 | 2019-03-18 16:03:32 |
|  3 | Ruby 基础教程       |   199 | 2019-04-01 06:16:14 |
|  4 | SQL 基础教程        |   533 | 2019-05-02 08:13:42 |
|  5 | Linux 基础教程      |  1000 | 2019-06-02 08:13:42 |
+----+---------------------+-------+---------------------+
5 rows in set (0.00 sec)
  1. 下面的 SQL 语句选取name 包含 y 字母的课程
select * from lesson where name like '%y%';

输出结果如下:

mysql> select * from lesson where name like '%y%';
+----+------------------+-------+---------------------+
| id | name             | views | created_at          |
+----+------------------+-------+---------------------+
|  1 | Python3 基础教程 |   981 | 2019-03-18 13:52:03 |
|  3 | Ruby 基础教程    |   199 | 2019-04-01 06:16:14 |
+----+------------------+-------+---------------------+
2 rows in set (0.00 sec)

通过使用 not 关键字,我们可以选取不匹配模式的记录

  1. 下面的 SQL 语句选取 name 不包含 “y” 的所有课程
select * from lesson where name not like '%y%';

运行结果如下

mysql> select * from lesson where name not like '%y%';
+----+---------------------+-------+---------------------+
| id | name                | views | created_at          |
+----+---------------------+-------+---------------------+
|  2 | JavaScript 基础教程 |    73 | 2019-03-18 16:03:32 |
|  4 | SQL 基础教程        |   533 | 2019-05-02 08:13:42 |
|  5 | Linux 基础教程      |  1000 | 2019-06-02 08:13:42 |
+----+---------------------+-------+---------------------+
3 rows in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值