SQL 通配符与特殊字符的查询

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  '/';

你可能感兴趣的:(数据库,SQL)