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

相关文章:

  • RabbitMQ 全面指南:从基础概念到高级特性实现
  • Unix/Linux 系统编程中用于管理信号处理行为的核心概念或模型
  • 外观模式(Facade Pattern)及其应用场景
  • Leetcode-3488距离最小相等元素查询
  • 系统的缓存(buff/cache)是如何影响系统性能的?
  • 第五十篇:AI画家的“神经中枢”:ComfyUI的推理路径与缓存逻辑深度解析
  • 【Web安全】csrf、ssrf和xxe的区别
  • Python实现电商商品数据可视化分析系统开发实践
  • Qt 中实现多线程的两种方式及结合
  • Pytest项目_day05(requests加入headers)
  • 8.6 JavaWeb(请求响应 P67-P74)
  • 部署Web UI自动化测试平台:SeleniumFlaskTester
  • UI测试平台TestComplete的AI视觉引擎技术解析
  • QT+opencv+yolov8推理
  • 移动端跨平台框架(支持Harmony、iOS、Android)
  • C语言:指针(1-2)
  • Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!
  • 霍尔传感器
  • 碰撞问题的分析
  • 什么是CDN, 它为什么更快
  • 《算法导论》第 7 章 - 快速排序
  • 概率/期望 DP Jon and Orbs
  • 机器学习④【算法详解:从决策树到随机森林】
  • 一周学会Matplotlib3 Python 数据可视化-图形的组成部分
  • 场外期权的卖方是什么策略?
  • Python包管理新利器:uv全面解析与Conda对比指南
  • 从 LinkedIn 到 Apache:Kafka 的架构设计与应用场景
  • KafKa 项目 -- GitHub 学习
  • 【第6话:相机模型2】相机标定在自动驾驶中的作用、相机标定方法详解及代码说明
  • 在Word和WPS文字中如何输入汉字的偏旁部首