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

[Oracle] SIGN()函数

SIGN() 是 Oracle 中用于判断数值符号的函数,它返回一个数值的符号指示值

SIGN()函数的主要功能是判断输入数值的符号,返回以下三种可能值:
1:当输入为正数时
0:当输入为零时
-1:当输入为负数时

语法格式

SIGN(n)

参数说明
n:要检查符号的数值表达式(可以是列、计算值或函数结果)

示例

-- 零测试
SELECT SIGN(0) FROM dual;  -- 0-- 正数测试
SELECT SIGN(12) FROM dual;  -- 1
SELECT SIGN(3.14159) FROM dual;  -- 1-- 负数测试
SELECT SIGN(-12) FROM dual;  -- -1
SELECT SIGN(-0.0001) FROM dual;  -- -1
SELECT SIGN(NULL) FROM dual;  -- NULL-- SIGN()函数结合NVL()函数处理NULL
SELECT account_id,SIGN(NVL(balance, 0)) AS balance_sign
FROM accounts;

提示Tips:SIGN()函数对NULL的处理(如果输入为NULL,结果返回NULL)

-- 将账户余额分类
-- 结果示例:
-- ACCOUNT_ID  BALANCE  BALANCE_STATUS
-- 1001        500.00   盈余
-- 1002        0.00     平衡
-- 1003        -200.00  透支
SELECT account_id,balance,CASE SIGN(balance)WHEN 1 THEN '盈余'WHEN 0 THEN '平衡'WHEN -1 THEN '透支'END AS balance_status
FROM accounts;-- 比较实际销售额与目标销售额
-- 结果示例:
-- PRODUCT_ID  ACTUAL_SALES  TARGET_SALES  DIFFERENCE  PERFORMANCE
-- P001        1200         1000          200         1
-- P002        800          1000          -200        -1
-- P003        1000         1000          0           0
SELECT product_id,actual_sales,target_sales,actual_sales - target_sales AS difference,SIGN(actual_sales - target_sales) AS performance
FROM sales_data;

SIGN()函数在WHERE子句中使用

-- 查找所有透支账户
SELECT account_id, balance
FROM accounts
WHERE SIGN(balance) = -1;-- 查找所有非负库存
SELECT product_id, stock_quantity
FROM inventory
WHERE SIGN(stock_quantity) >= 0;

SIGN()函数与CASE表达式结合使用

-- 统计销售业绩情况
SELECT COUNT(*) AS total_products,SUM(CASE WHEN SIGN(actual_sales - target_sales) = 1 THEN 1 ELSE 0 END)  AS above_target,SUM(CASE WHEN SIGN(actual_sales - target_sales) = -1 THEN 1 ELSE 0 END) AS below_target,SUM(CASE WHEN SIGN(actual_sales - target_sales) = 0 THEN 1 ELSE 0 END)  AS on_target
FROM sales_data;-- 实现分段函数
SELECT x,CASE WHEN SIGN(x) = 1 THEN x*xWHEN SIGN(x) = -1 THEN -xELSE 0END AS function_value
FROM math_values;

SIGN()函数与其他函数结合使用

-- 计算绝对值的符号表示
SELECT number_value,SIGN(number_value) AS sign,ABS(number_value) AS absolute_value,SIGN(number_value) * ABS(number_value) AS original_value
FROM numbers_table;
http://www.dtcms.com/a/317448.html

相关文章:

  • 微信小程序最大层级跳转问题
  • 使用 Maxwell 和 RabbitMQ 监控 Mysql Flowable 表变更
  • Kubernetes(k8s)之容忍与污点
  • Java学习第一百零九部分——Jenkins(一)
  • k8s +cilium+metallb 集群流量走向
  • 嵌入式学习的第四十四天-ARM
  • Gitlab+Jenkins+K8S+Registry 建立 CI/CD 流水线
  • Packets Frames 数据包和帧
  • docker-compose快速部署启动file beat+ELK
  • 企业级Linux服务器安全:防火墙规则配置与Web/SSH服务优化指南
  • 机器学习④【算法详解:从决策树到随机森林】
  • 【Graphiti MCP Server 配置与使用教程 (优化版)】
  • 了解SELinux
  • CGAL中函数squared_distance使用细则
  • 数据安全框架规划图
  • 【LeetCode 热题 100】347. 前 K 个高频元素——(解法三)桶排序
  • 使用R将nc文件转换为asc文件或者tif文件
  • C语言控制语句练习题2
  • KVazaar:开源H.265/HEVC编码器技术深度解析
  • vcpkg: 一款免费开源的C++包管理器
  • 【开源分享】can-utils:深入解析 Linux CAN 工具集
  • UE编辑器相机窗口运行时相机fov 大小不一致
  • 毕业设计选题推荐之基于Spark的在线教育投融数据可视化分析系统 |爬虫|大数据|大屏|预测|深度学习|数据分析|数据挖掘
  • css margin属性auto原理
  • 海康威视相机,MVS连接成功,但无图像怎么办?
  • python每日一题 贪心算法
  • 智能文本转语音新选择:EasyVoice与内网穿透打造私域有声平台
  • 深入理解 Qt 中的 QOverload
  • 分布式事务Seata、LCN的原理深度剖析
  • Java 排序教程