Oracle数据库之条件查询、模糊查询和排序(四)

目录

 条件查询

1. 简单条件查询

2. 多条件查询

3. 使用比较运算符

4. 使用 IN 运算符

6. 使用 LIKE 运算符进行模糊查询

7. 使用 IS NULL 或 IS NOT NULL 检查空值

模糊查询 

1. 使用LIKE运算符进行模糊查询

示例

2. 使用正则表达式进行模糊查询

示例

排序 

1. 基本的排序

2. 多列排序

3. 空值排序

4. 随机排序

5. 根据匹配度排序(模糊查询中的排序)

条件查询

Oracle 中的条件查询是通过在 SQL 查询语句中使用 WHERE 子句来实现的。WHERE 子句允许你指定一个或多个条件,以过滤出满足这些条件的记录。

以下是一些基本的 Oracle 条件查询示例:

1. 简单条件查询

查询 employees 表中 salary 大于 5000 的所有员工:

SELECT * FROM employees WHERE salary > 5000;

2. 多条件查询

查询 employees 表中 salary 大于 5000 并且 department_id 为 20 的所有员工:

SELECT * FROM employees WHERE salary > 5000 AND department_id = 20;

或者,查询 salary 大于 5000 或者 department_id 为 20 的所有员工:

SELECT * FROM employees WHERE salary > 5000 OR department_id = 20;

3. 使用比较运算符

 你可以使用各种比较运算符,如 <<=>==<>(或 !=)等。
 

4. 使用 IN 运算符

查询 employees 表中 department_id 为 10、20 或 30 的所有员工:5. 使用 BETWEEN 运算符

查询 employees 表中 salary 在 3000 和 7000 之间的所有员工(包括 3000 和 7000):

SELECT * FROM employees WHERE salary BETWEEN 3000 AND 7000;

6. 使用 LIKE 运算符进行模糊查询

查询 employees 表中 first_name 以 "A" 开头的所有员工:

SELECT * FROM employees WHERE first_name LIKE 'A%';

查询 employees 表中 first_name 包含 "A" 的所有员工:

SELECT * FROM employees WHERE first_name LIKE '%A%';

注意:在 Oracle 中,% 是一个通配符,代表零个、一个或多个字符。


7. 使用 IS NULL 或 IS NOT NULL 检查空值

查询 employees 表中 commission_pct 为空的所有员工:

SELECT * FROM employees WHERE commission_pct IS NULL;

查询 employees 表中 commission_pct 不为空的所有员工:

SELECT * FROM employees WHERE commission_pct IS NOT NULL;

这些只是 Oracle 条件查询的一些基本示例。你可以根据实际需求组合和扩展这些条件。

模糊查询 

在Oracle数据库中,模糊查询通常使用LIKE运算符和通配符来实现。以下是关于Oracle模糊查询的详细说明:

1. 使用LIKE运算符进行模糊查询

WHERE子句中使用LIKE运算符,并结合通配符%_,可以对数据库中的字符串进行模糊匹配。

  • %:代表零个、一个或多个字符。
  • _:代表一个字符。
示例
  1. 查询employees表中first_name字段包含“A”的所有员工:

    SELECT * FROM employees WHERE first_name LIKE '%A%';
  2. 查询employees表中last_name字段以“Smith”开头的所有员工:

    SELECT * FROM employees WHERE last_name LIKE 'Smith%';
  3. 查询employees表中job_title字段第三个字符是“M”的所有员工:

    SELECT * FROM employees WHERE last_name LIKE 'Smith%';

2. 使用正则表达式进行模糊查询

除了LIKE运算符外,Oracle还提供了REGEXP_LIKE函数,它允许你使用正则表达式进行更复杂的模糊查询。

示例
  1. 查询employees表中email字段包含@example.com的所有员工:

    SELECT * FROM employees WHERE REGEXP_LIKE(email, '@example\.com$');

    注意:在正则表达式中,.是一个特殊字符,表示任意单个字符。因此,如果你想匹配实际的.字符,你需要使用\.进行转义。

  2. 查询employees表中phone_number字段以数字1开头,后面跟着任意三个数字的所有员工:

    SELECT * FROM employees WHERE REGEXP_LIKE(phone_number, '^1\d{3}');

    在这个例子中,^表示字符串的开始,\d表示任意数字,{3}表示前面的字符(即\d)必须恰好出现三次。

这些是在Oracle数据库中进行模糊查询的基本方法。你可以根据自己的需求选择使用LIKE运算符或正则表达式来进行模糊匹配。

排序 

在Oracle数据库中,排序是通过ORDER BY子句来实现的。你可以使用ORDER BY子句根据一个或多个列对查询结果进行排序。

1. 基本的排序

  1. 升序排序:默认情况下,ORDER BY子句按升序排序。你可以使用ASC关键字明确指定升序(虽然在实际中经常省略)。

    SELECT * FROM employees ORDER BY salary ASC;

    或者简单地:

    SELECT * FROM employees ORDER BY salary;
  2. 降序排序:如果你想按降序排序,可以使用DESC关键字。

    SELECT * FROM employees ORDER BY salary DESC;

2. 多列排序

你可以根据多列进行排序。例如,首先按department_id升序排序,然后按salary降序排序:

SELECT * FROM employees ORDER BY department_id ASC, salary DESC;

3. 空值排序

对于包含空值的列,你可以使用NULLS FIRSTNULLS LAST来指定空值的排序位置。

  • NULLS FIRST:空值将排在最前面。
  • NULLS LAST:空值将排在最后面。

例如,将commission_pct为空的员工排在最前面:

SELECT * FROM employees ORDER BY department_id ASC, salary DESC;

4. 随机排序

如果你希望查询结果每次返回的顺序都不同,可以使用随机排序。但请注意,随机排序可能会消耗更多的系统资源,特别是在处理大量数据时。

SELECT * FROM employees ORDER BY DBMS_RANDOM.VALUE();

5. 根据匹配度排序(模糊查询中的排序)

在模糊查询中,如果你想根据匹配度进行排序(例如,在文本搜索中根据相似度或相关性排序),这通常涉及到更复杂的查询和可能的函数或索引支持。Oracle数据库提供了多种文本搜索和全文搜索的选项,如Oracle Text,这些选项可以根据你的需求进行配置和使用。

但请注意,简单的模糊查询(如使用LIKEREGEXP_LIKE)本身并不直接支持基于匹配度的排序。你可能需要结合其他技术或工具来实现这一需求。

相关推荐

  1. Oracle数据库条件查询模糊查询排序

    2024-05-12 09:26:06       11 阅读
  2. 数据库查询--条件查询

    2024-05-12 09:26:06       11 阅读
  3. Oracle数据库基本查询详解(三)

    2024-05-12 09:26:06       14 阅读
  4. sql语句条件查询模糊查询

    2024-05-12 09:26:06       30 阅读
  5. elasticsearch条件查询

    2024-05-12 09:26:06       18 阅读
  6. Oracle中的模糊查询

    2024-05-12 09:26:06       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 09:26:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 09:26:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 09:26:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 09:26:06       18 阅读

热门阅读

  1. 介绍 TensorFlow 的基本概念和使用场景

    2024-05-12 09:26:06       8 阅读
  2. 井字棋(免费版)

    2024-05-12 09:26:06       9 阅读
  3. 【socket】 linux C++ socket 优化参数

    2024-05-12 09:26:06       7 阅读
  4. Jtti:怎么检测香港服务器的响应速度?

    2024-05-12 09:26:06       11 阅读
  5. 服务器硬件命令查看

    2024-05-12 09:26:06       9 阅读
  6. k8s部署针对外部服务器的prometheus服务

    2024-05-12 09:26:06       9 阅读
  7. LeetCode 题目 118:杨辉三角

    2024-05-12 09:26:06       10 阅读