Sql server 如果值小于零,则返回零

Sql server 如果值小于零,则返回零,sql-server,tsql,Sql Server,Tsql,如果值小于零而不使用case语句,是否可以返回零 e、 g.最大值(a,0)只是为了好玩: DECLARE @a INT = -3 SELECT COALESCE(NULLIF (ABS(@a), -@a), 0) 这篇文章只是暗示了一个方向,CASE表达式是获得预期结果的更好的选择 NULLIF毕竟只是一个花哨的案例。上面的示例查询(在执行计划中)扩展为: 合适的案例表达式: -- All versions SELECT CASE WHEN @a > 0 THEN @a ELSE 0

如果值小于零而不使用case语句,是否可以返回零

e、 g.最大值(a,0)只是为了好玩:

DECLARE @a INT = -3
SELECT COALESCE(NULLIF (ABS(@a), -@a), 0)
这篇文章只是暗示了一个方向,
CASE
表达式是获得预期结果的更好的选择

NULLIF
毕竟只是一个花哨的
案例
。上面的示例查询(在执行计划中)扩展为:

合适的
案例
表达式:

-- All versions
SELECT CASE WHEN @a > 0 THEN @a ELSE 0 END;

-- SQL Server 2012 or later
SELECT IIF(@a > 0, @a, 0);

为什么不想使用大小写表达式。这几乎就是他们的目的。这是个问题!问题是什么?为什么“尽可能简洁”是一个目标?
CASE
表达式是自文档化的,保存字符并不能获得额外的分数或提高性能,因为它可能更神秘。0大于任何负值。MAX(value,0)对我来说非常清楚。@PaulWhite:使用这个简单版本的另一个原因是:
选择CASE WHEN@a<0然后选择0 ELSE@a END
处理空值的另一个表达式:
@a*(@a)+1)/2)
-- All versions
SELECT CASE WHEN @a > 0 THEN @a ELSE 0 END;

-- SQL Server 2012 or later
SELECT IIF(@a > 0, @a, 0);