首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 数据更新
4-1 数据的插入(INSERT语句的使用方法)
什么是INSERT
INSERT语句的基本语法
列清单的省略
插入NULL
插入默认值
从其他表中复制数据
4-2 数据的删除(DELETE语句的使用方法)
DROP TABLE语句和DELETE语句
DELETE语句的基本语法
指定删除对象的DELETE语句(搜索型DELETE)
4-3 数据的更新(UPDATE语句的使用方法)
UPDATE语句的基本语法
指定条件的UPDATE语句(搜索型UPDATE)
使用NULL进行更新
多列更新
4-4 事务
什么是事务
创建事务
ACID特性
第5章 复杂查询
5-1 视图
视图和表
创建视图的方法
视图的限制① ——定义视图时不能使用ORDER BY子句
视图的限制② ——对视图进行更新
删除视图
5-2 子查询
子查询和视图
子查询的名称
标量子查询
标量子查询的书写位置
使用标量子查询时的注意事项
5-3 关联子查询
普通的子查询和关联子查询的区别
关联子查询也是用来对集合进行切分的
结合条件一定要写在子查询中
第6章 函数、谓词、CASE表达式
6-1 各种各样的函数
函数的种类
算术函数
字符串函数
日期函数
转换函数
6-2 谓词
什么是谓词
LIKE谓词——字符串的部分一致查询
BETWEEN谓词——范围查询
IS NULL、IS NOT NULL——判断是否为NULL
IN谓词——OR的简便用法
使用子查询作为IN谓词的参数
EXIST谓词
6-3 CASE表达式
什么是CASE表达式
CASE表达式的语法
CASE表达式的使用方法
第7章 集合运算
7-1 表的加减法
什么是集合运算
表的加法——UNION
集合运算的注意事项
包含重复行的集合运算——ALL选项
选取表中公共部分——INTERSECT
记录的减法——EXCEPT
7-2 联结(以列为单位对表进行联结)
什么是联结
内联结——INNER JOIN
外联结——OUTER JOIN
3张以上的表的联结
交叉联结——CROSS JOIN
联结的特定语法和过时语法
当前位置:
首页>>
技术小册>>
SQL基础教程(中)
小册名称:SQL基础教程(中)
### 章节:LIKE谓词——字符串的部分一致查询 在SQL(Structured Query Language,结构化查询语言)中,`LIKE`谓词是用于在`WHERE`子句中执行模糊匹配的重要工具。它允许你根据模式(pattern)来搜索列中的文本数据,而非精确匹配整个字符串。这对于处理包含不确定或可变部分的文本数据非常有用,比如用户输入、地址信息、产品描述等。本章将深入讲解`LIKE`谓词的基本用法、通配符的使用、以及一些高级技巧和注意事项。 #### 一、LIKE谓词基础 `LIKE`谓词的基本语法如下: ```sql SELECT column_names FROM table_name WHERE column_name LIKE pattern; ``` 这里,`pattern`是你想要匹配的模式,它可以包含普通字符和通配符。普通字符直接按字面意思进行匹配,而通配符则代表一个或多个其他字符。 #### 二、通配符介绍 `LIKE`谓词主要依赖于两个通配符来构建模式:`%`(百分号)和`_`(下划线)。 1. **`%`(百分号)**:表示任意数量的字符(包括零个字符)。 - 示例:`SELECT * FROM employees WHERE name LIKE '张%';` 将匹配所有以“张”开头的名字。 - 另一个例子:`SELECT * FROM products WHERE description LIKE '%苹果%';` 将匹配所有描述中包含“苹果”的产品。 2. **`_`(下划线)**:表示任意单个字符。 - 示例:`SELECT * FROM users WHERE username LIKE '_an';` 将匹配任何第二个字符是“a”,第三个字符是“n”的用户名,如“Dan”、“Man”等。 #### 三、基本用法示例 假设我们有一个名为`students`的表,包含`id`、`name`和`email`等字段,以下是几个使用`LIKE`谓词的基本查询示例。 **示例1:查找名字以“李”开头的学生** ```sql SELECT * FROM students WHERE name LIKE '李%'; ``` **示例2:查找邮箱中包含“gmail”的学生** ```sql SELECT * FROM students WHERE email LIKE '%gmail%'; ``` **示例3:查找名字第二个字是“晓”的学生** ```sql SELECT * FROM students WHERE name LIKE '_晓%'; ``` #### 四、高级技巧与注意事项 1. **大小写敏感性**: - `LIKE`谓词对大小写的敏感性取决于数据库的配置和使用的字符集。在某些数据库(如MySQL)中,默认情况下是不区分大小写的,但在其他数据库(如PostgreSQL)中,可能是区分大小写的。你可以通过数据库的配置或函数(如`LOWER()`或`UPPER()`)来确保查询的一致性。 2. **通配符位置**: - 将`%`放在模式的开始位置会显著增加查询的复杂性,因为数据库需要扫描整个列来查找匹配项。如果可能,尽量将`%`放在模式的末尾或使用更具体的模式前缀来限制搜索范围。 3. **使用ESCAPE字符**: - 当你的模式需要包含通配符本身(如搜索包含`%`或`_`的字符串)时,可以使用`ESCAPE`子句来定义一个转义字符。这样,你就可以通过在该字符前加上转义字符来搜索通配符本身了。 - 示例:`SELECT * FROM products WHERE description LIKE '%25%%' ESCAPE '\';` 这里`\`被定义为转义字符,用于搜索包含`%`的字符串。 4. **性能优化**: - 在使用`LIKE`谓词进行模糊匹配时,如果数据量很大,查询可能会变得很慢。为了提高性能,可以考虑在搜索列上使用索引,但请注意,并非所有数据库系统都能有效地利用包含前导`%`的`LIKE`查询的索引。 - 另外,考虑使用全文搜索功能(如果数据库支持)来处理复杂的文本搜索需求,这通常比`LIKE`查询更高效。 5. **模式匹配与正则表达式**: - 虽然`LIKE`谓词对于简单的模式匹配非常有用,但它并不支持复杂的模式匹配逻辑,如字符集、重复模式等。对于这些需求,你可能需要使用数据库提供的正则表达式函数(如MySQL的`REGEXP`或PostgreSQL的`~`、`~*`操作符)。 #### 五、实际应用场景 `LIKE`谓词在实际应用中有着广泛的用途,包括但不限于: - **用户搜索**:在Web应用程序中,根据用户输入的关键词搜索数据库中的记录。 - **数据清洗**:查找并替换或删除包含特定模式(如无效字符、错误格式等)的数据。 - **数据分析**:根据部分匹配的信息对数据进行分类或统计,例如,分析客户反馈中提到的产品特性或问题。 #### 六、总结 `LIKE`谓词是SQL中强大的文本搜索工具,通过结合使用`%`和`_`通配符,可以灵活地执行字符串的部分一致查询。然而,在使用时需要注意大小写敏感性、通配符位置、性能优化等问题,并根据实际场景选择合适的搜索策略。通过深入理解`LIKE`谓词的工作原理和高级技巧,你可以更有效地从数据库中检索和分析文本数据。
上一篇:
什么是谓词
下一篇:
BETWEEN谓词——范围查询
该分类下的相关小册推荐:
PostgreSQL入门教程
SQL基础教程(上)
高性能的Postgres SQL
SQL基础教程(下)