1. 背景
在搜索数据库中的数据时,我们经常会用到模糊查询,在模糊查询中,我们需要了解一些通配符。
2.SQL中的通配符
在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_ | 仅替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或者[!charlist] | 不在字符列中的任何单一字符 |
3.实例
原始的表 (用在例子中的):
Persons 表:
ID | name | age | sex | address |
---|---|---|---|---|
1 | 张三 | 18 | 男 | 上海市浦东新区三林镇三林路158号666 |
2 | 李四 | 20 | 男 | 上海市黄浦区中山南路888号 |
3 | 王五 | 19 | 女 | 湖北省武汉市汉阳区 |
4 | 赵六 | 22 | 女 | 湖北省黄冈市麻城市 |
3.1.使用 % 通配符
现在,我们希望从上面的 “Persons” 表中选取居住在以 “上海市” 开始的城市里的人:我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE address LIKE '上海市%'
期望结果:
ID | name | age | sex | address |
---|---|---|---|---|
1 | 张三 | 18 | 男 | 上海市浦东新区三林镇三林路158号666 |
2 | 李四 | 20 | 男 | 上海市黄浦区中山南路888号 |
3.2.使用 % 通配符
接下来,我们希望从 “Persons” 表中选取居住在包含 “武汉市” 的人。我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE address LIKE '%武汉市%'
期望结果:
ID | name | age | sex | address |
---|---|---|---|---|
3 | 王五 | 19 | 女 | 湖北省武汉市汉阳区 |
3.3.使用 _ 通配符
现在,我们希望从上面的 “Persons” 表中选取名字的第一个字符之后是 “六” 的人。我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE name LIKE '_六'
期望结果:
ID | name | age | sex | address |
---|---|---|---|---|
4 | 赵六 | 22 | 女 | 湖北省黄冈市麻城市 |
3.4.使用 [charlist]通配符
现在,我们希望从上面的 “Persons” 表中选取名字以"张",“王” 的人。我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE name like ‘[张王]%’
期望结果:
ID | name | age | sex | address |
---|---|---|---|---|
1 | 张三 | 18 | 男 | 上海市浦东新区三林镇三林路158号666 |
3 | 王五 | 19 | 女 | 湖北省武汉市汉阳区 |
3.5.使用 [!charlist]通配符
现在,我们希望从上面的 “Persons” 表中选取名字不以"张",“王” 的人。我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE name like ‘[!张王]%’
期望结果:
ID | name | age | sex | address |
---|---|---|---|---|
2 | 李四 | 20 | 男 | 上海市黄浦区中山南路888号 |
4 | 赵六 | 22 | 女 | 湖北省黄冈市麻城市 |
4.特殊字符的查询
在模糊查询中,可能我们所需要匹配的字符就是特殊字符,例如:p_% 以p_开头的字符
4.1默认转义
SELECT * FROM table1 WHERE cloum1 LIKE 'p\_%';
4.2使用ESCAPE关键字定义转义符
SELECT * FROM table1 WHERE cloum1 LIKE 'p/_%' ESCAPE '/';