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

[Oracle] GREATEST()函数

GREATEST()是 Oracle 的一个非常有用的比较函数,它可以从一组表达式中找出最大的值

GREATEST()函数在处理多值比较、数据筛选和条件逻辑时特别实用

语法格式

GREATEST(expr1, expr2 [, expr3, ...])

参数说明
expr1, expr2, ...:要比较的表达式(至少需要两个参数),可以是列名、常量、函数或计算表达式

GREATEST()函数可以比较数值、日期或字符类型的值,并且所有比较的参数类型需保持相同

示例

-- 比较两个数值
SELECT GREATEST(10, 20) FROM dual;  -- 20-- 比较多个数值
SELECT GREATEST(5, 10, 8, 3, 15) FROM dual;  -- 15-- 与列数据比较
SELECT product_id, price, discount_price,GREATEST(price, discount_price) AS effective_price
FROM products;-- 确保值不低于最小值
UPDATE employees
SET salary = GREATEST(salary, 5000)
WHERE department_id = 10;-- 计算最高得分
SELECT player_name,GREATEST(score1, score2, score3) AS best_score
FROM game_results;-- 与CASE表达式结合
SELECT product_id,CASE WHEN GREATEST(price1, price2, price3) > 100 THEN '高价'ELSE '普通'END AS price_level
FROM products;-- 生成销售报表,显示最高销售额
SELECT region,GREATEST(Q1_sales, Q2_sales, Q3_sales, Q4_sales) AS peak_sales
FROM regional_sales;-- 比较日期
-- 结果: 2025-08-15
SELECT GREATEST(TO_DATE('2025-01-01', 'YYYY-MM-DD'),TO_DATE('2025-08-15', 'YYYY-MM-DD'),TO_DATE('2025-03-12', 'YYYY-MM-DD'))
FROM dual;-- 比较字符串(按字母顺序)
SELECT GREATEST('Apple', 'Banana', 'Cherry') FROM dual;  -- 'Cherry'-- 比较混合数据类型
-- Oracle会尝试隐式转换
SELECT GREATEST(100, '200') FROM dual;  -- 200(字符串'200'被转换为数字)
SELECT GREATEST(10, NULL) FROM dual;  -- NULLSELECT GREATEST(NULL, NULL, NULL) FROM dual;  -- NULLSELECT GREATEST(10, NULL, 20) FROM dual;  -- NULLSELECT GREATEST(10, NULL, 20, NULL) FROM dual;  -- NULL

提示Tips

① GREATEST()函数的输入值为NULL,其输出值也为NULL

② 尽量比较相同数据类型的值,保持数据类型一致性,隐式转换可能导致意外结果或错误

③ 在WHERE子句中使用GREATEST()通常会使索引失效

-- 不推荐(索引可能无法使用)
SELECT * FROM table WHERE GREATEST(col1, col2) > 100;-- 推荐写法
SELECT * FROM table WHERE col1 > 100 OR col2 > 100;
http://www.dtcms.com/a/320088.html

相关文章:

  • GCC与NLP实战:编译技术赋能自然语言处理
  • Kubernetes(k8s)之Service服务
  • 【C语言】深入理解编译与链接过程
  • Java中的反射机制
  • 【AxureMost落葵网】企业ERP项目原型-免费
  • 上位机知识篇篇---驱动
  • Xvfb虚拟屏幕(Linux)中文入门篇1:(wikipedia摘要,适当改写)
  • 函数、方法和计算属性
  • 计网学习笔记第3章 数据链路层(灰灰题库)
  • [激光原理与应用-169]:测量仪器 - 能量型 - 光功率计(功率稳定性监测)
  • 记录:rk3568适配开源GPU驱动(panfrost)
  • Linux中Docker Swarm实践
  • 12-netty基础-手写rpc-编解码-04
  • ubuntu 2024 安装拼音输入法
  • 【macOS操作系统部署开源DeepSeek大模型,搭建Agent平台,构建私有化RAG知识库完整流程】
  • Linux综合练习2
  • 电气设备与互感器全解析
  • 智能制造网络质量保障:德承 DX-1200多网口工控机在windows系统下的网络性能测试指南
  • 操作系统与并发底层原理多道技术
  • docker容器导出为镜像
  • 深度学习入门Day7:Transformer架构原理与实战全解析
  • 亚马逊广告运营:有什么好用的辅助工具
  • Redis配置、测试及分布式缓存实现
  • Android 之 Jetpack - Paging
  • 《C语言》函数练习题--2
  • ElasticSearch相关术语介绍
  • 使用 decimal 包解决 go float 浮点数运算失真
  • 小鸡模拟器安卓版:经典街机游戏的移动体验
  • 利用Axure与JavaScript打造动态图片上传原型:设计案例分享
  • spring-cglib代理-初探01