当前位置: 首页 > 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.lryc.cn/news/613444.html

相关文章:

  • 数据库入门:从零开始构建你的第一个数据库
  • 一个基于固定 IP地址查询天气的 C 语言程序,通过调用第三方天气 API:
  • Oracle 关闭 impdp任务
  • Oracle 12c + Pl/Sql windows系统下表空间创建、迁移,dmp备份导入,数据库字符集更改
  • 图论(1):图数据结构
  • 攻防世界WEB(新手模式)2-2-upload1
  • 【YOLO学习笔记】YOLOv8详解解读
  • 工业相机使用 YOLOv8深度学习模型 及 OpenCV 实现目标检测简单介绍
  • Moses工具的配置和小语种平行语料训练SMT完整实现
  • 商城小程序怎么做?如何开发母婴用品商城小程序?
  • 前端三大核心要素以及前后端通讯
  • mysql_mcp_server_pro源码部署及启动报错新手指南:让智能体长出手来直接获取到最底层的数据
  • Linux ISCSI服务配置
  • 聚集索引VS非聚集索引:核心差异详解
  • 将Excel数据导入SQL Server数据库,并更新源表数据
  • 安卓Handler和Looper的学习记录
  • ArkTS: McPointChart
  • Debian系统 为账号添加sudo权限
  • 远程制作《最后生还者》中的Xsens动作捕捉技术
  • Maven分模块开发实战指南
  • Windows下安装SageAttention
  • 【CodeButty + 自制MCP】给AI装上翅膀,快速绘制思维导图
  • javaweb开发之会话_过滤器_监听器
  • EtherCAT时钟DC同步的三种模式
  • 项目构想|文生图小程序
  • OpenCV 入门教程:开启计算机视觉之旅
  • C语言memcpy函数详解:高效内存复制的实用工具
  • 【代码随想录day 14】 力扣 226.反转二叉树
  • 套接字编程UDP
  • 如何快速开发符合Matter标准的智能家居设备?