sql - 存储数据范围的颜色并在 SQL Server 中的 case 语句中使用
问题描述
我有一个数据集如下。小提琴网址
我需要使用上表中的运算符获取给定数字的颜色。
例如;
当我调用该函数getColor(6)
时,应该返回PURPLE
。
当我调用该函数getColor(0)
时,应该返回RED
。
我怎么能做到这一点?
解决方案
CASE
最简单的解决方案是使用表达式为每个运算符创建匹配条件:
DECLARE @val NUMERIC(10) = 6;
SELECT /* TOP 1 */ *
FROM #range_color
CROSS APPLY (SELECT @val - range_number) AS ca(diff)
WHERE CASE WHEN diff < 0 AND range_operator = '<' THEN 1 END = 1
OR CASE WHEN diff <= 0 AND range_operator = '<=' THEN 1 END = 1
OR CASE WHEN diff >= 0 AND range_operator = '>=' THEN 1 END = 1
OR CASE WHEN diff > 0 AND range_operator = '>' THEN 1 END = 1
ORDER BY ABS(diff)
推荐阅读
- mysql - 存储过程的创建未执行
- python - Pandas矢量化中的复杂条件
- sqlite - 如果我的 Winforms 应用程序的平台设置为 x86,SQLite 会无法运行吗?
- java - Quarkus Redis 客户端不使用来自 application.properties 的主机
- android - 在recyclerview列表中添加项目时,它将更改聊天室中的所有消息,底部已经可用的消息
- jwt - User.Identity.GetUserId 返回用户名而不是 wso2 令牌中的用户 ID
- random - 如何在 rust 中生成随机 unicode 字符串?
- sql-server - SQL Server:插入和更新的合并查询;它也会做删除操作吗?
- r - R函数计算两点之间的角度和方向?
- c - SDL2 C 图像不显示