当前位置: 首页 > news >正文

【Oracle学习笔记】8.函数(Function)

1.数值函数

  • ABS(求绝对值)
  • ROUND(四舍五入)ROUND(4.567, 2) 返回 4.57,将数字 4.567 四舍五入到小数点后两位
  • TRUNC(截断)TRUNC(4.567, 1) 返回 4.5,截断数字 4.567 到小数点后一位
  • MOD(取模)

2.字符函数

  • CONCAT(字符串拼接)CONCAT('Hello, ', 'World!') 返回 'Hello, World!'
  • SUBSTR(截取子字符串)SUBSTR('Hello, World!', 7, 5) 返回 'World',从字符串第 7 个字符开始截取 5 个字符
  • LENGTH(获取字符串长度)
  • UPPER(转换为大写)
  • LOWER(转换为小写)

3.日期函数

  • SYSDATE(获取当前日期和时间)
  • ADD_MONTHS(增加或减少指定月数)ADD_MONTHS(SYSDATE, 3) 返回当前日期 3 个月后的日期
  • MONTHS_BETWEEN(计算两个日期之间的月数差)
  • NEXT_DAY(获取指定日期之后的下一个指定星期几的日期)

4.聚合函数

  • SUM(求和)
  • AVG(求平均值)
  • COUNT(计数)
  • MIN(求最小值)
  • MAX(求最大值)
    这些函数通常与 GROUP BY 子句一起使用,用于对数据进行分组统计。
    例如:
--可以统计每个部门的员工数量和平均工资
SELECT department, COUNT(*), AVG(salary) FROM employees GROUP BY department;

5.转换函数

  • 数据类型转换函数:
    • TO_CHAR(将日期或数字转换为字符串)TO_CHAR(SYSDATE,'YYYY-MM-DD') 将当前日期转换为指定格式的字符串
    • TO_DATE(将字符串转换为日期)TO_DATE('2023-10-01','YYYY-MM-DD') 将给定格式的字符串转换为日期类型
    • TO_NUMBER(将字符串转换为数字)
  • 字符集转换函数:在处理多字符集环境时,CONVERT 等函数可用于字符集之间的转换。

6.条件函数

  • CASE 表达式:CASE WHEN 条件 THEN 取值 ELSE 取值 END 语句用于在 SQL 中实现条件逻辑。有简单 CASE 表达式和搜索 CASE 表达式两种形式。
  • 示例:
-- 简单CASE表达式
SELECT employee_name,salary,CASE departmentWHEN 'HR' THEN salary * 1.1WHEN 'IT' THEN salary * 1.05ELSE salaryEND AS adjusted_salary
FROM employees;-- 搜索CASE表达式
SELECT employee_name,salary,CASEWHEN salary < 5000 THEN 'Low'WHEN salary BETWEEN 5000 AND 10000 THEN 'Medium'ELSE 'High'END AS salary_level
FROM employees;
  • DECODE 函数:DECODE 函数是 CASE 表达式的一种简化形式,用于简单的条件判断。例如,DECODE(department, 'HR', salary * 1.1, 'IT', salary * 1.05, salary) 功能与上述简单 CASE 表达式类似。

7.分析函数

  • ROW_NUMBER(为结果集的每一行生成一个唯一的行号)
  • RANK(为结果集的每一行生成一个排名,相同值排名相同,下一个排名会跳过相应数量)
  • DENSE_RANK(与 RANK 类似,但相同值排名相同,下一个排名不会跳过)
  • LAGLEAD(用于访问结果集中当前行之前或之后的行的数据)
  • 示例:
-- 使用ROW_NUMBER为员工按工资排名
SELECT employee_name,salary,ROW_NUMBER() OVER (ORDER BY salary DESC) AS salary_rank
FROM employees;-- 使用LAG获取前一个员工的工资
SELECT employee_name,salary,LAG(salary, 1, 0) OVER (ORDER BY employee_id) AS prev_salary
FROM employees;
http://www.dtcms.com/a/265949.html

相关文章:

  • 湖北理元理律师事务所的债务管理方法论
  • 算法刷题打卡(1)—— 快速排序
  • 睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(上)
  • 【python】OOP:Object-Oriented Programming
  • 数字人分身+矩阵系统聚合+碰一碰发视频: 源码搭建-支持OEM
  • AI开发平台:从技术壁垒到全民创新,AI 开发平台如何重构产业生态?
  • C++ 标准模板库算法之 transform 用法
  • STC8G 8051内核单片机开发 (中断)
  • 在 UniApp 项目中巧用开发工具与 AI 插件:全面提升开发到部署的效率
  • 【时间序列数据处理的噩梦与救赎:一次复杂数据可视化问题的深度复盘】
  • 运维服务部初级服务工程师面招聘笔试题和答案
  • PROFINET转MODBUS TCP网关在机械臂通信操作中的应用研究
  • 微信小程序——skyline版本问题
  • 2025年金融创新与计算机视觉国际会议(FICV 2025)
  • 【网络协议】WebSocket简介
  • Web 服务器架构选择深度解析
  • HTTP-Postman的安装及其使用
  • 电脑CPU使用率占用100%怎么办 解决步骤指南
  • 【数字后端】- 衡量design的congestion情况
  • HTTP各版本变化详解
  • C# 线程同步(一)同步概念介绍
  • 基于Anything LLM的本地知识库系统远程访问实现路径
  • react-打包和本地预览 ——打包优化
  • 基于CNN的人脸关键点检测
  • 强实时运动控制内核MotionRT750(一):驱动安装、内核配置与使用
  • 【科普】Cygwin与wsl与ssh连接ubuntu有什么区别?DIY机器人工房
  • 【大模型学习】项目练习:文档对话助手
  • 零碳园区如何建设,微电网系统来助力
  • 离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制
  • 拉横幅横幅识别检测数据集VOC+YOLO格式1962张1类别