select max(val,0)
from table
我不希望找到整个表的最大值
必须有一个更简单方式比这个权利?
select case when val > 0 then val else 0 end
from table
编辑:我使用Microsoft SQL Server
select max(val,0)
from table
我不希望找到整个表的最大值
必须有一个更简单方式比这个权利?
select case when val > 0 then val else 0 end
from table
编辑:我使用Microsoft SQL Server
功能GREATEST
和LEAST
不是SQL标准,但在许多的RDBMS(例如,PostgreSQL系统)。所以
SELECT GREATEST(val, 0) FROM mytable;
谢谢,upvoted。我正在运行Microsoft SQL Server。所以它看起来像那些不存在:(。 – Colin
在SQL 本身。但是许多数据库引擎定义了一组可以在SQL语句中使用的函数。不幸的是,他们通常使用不同的名称和参数列表。
在MySQL中,函数是最好的。在SQLite中,它是MAX(它的工作方式与一个或多个参数不同)。
你在SQL中拥有的甚至不是有效的SQL。这不是MAX如何在SQL中工作的。在T-SQL中,MAX汇总了一个返回最大值的范围。你想要的只是两个更大的价值。
阅读更多信息:
Is there a Max function in SQL Server that takes two values like Math.Max in .NET?
让它基于JOIN一套?
SELECT
max(val)
FROM
(
select val
from table
UNION ALL
select 0
) foo
这避免了在其他问题提出了一个标量UDF,这可能更适用
什么SQL实现? – JNK
在Fortran中,MAX(a,b,...)做了你想要的。在SQL中,一些方言支持“LARGER”或“SMALLER”或“LARGEST”或“SMALLEST”等函数。 AFAIK任务没有标准功能。 –
请注意可怕的NULL。你是否需要:'如果val是NULL,则THEN 0当VAL> 0 THEN val ELSE 0 END'(对于0已知不是NULL的情况),或者'CASE WHERE VAL1 IS NULL THEN VAL2 WHERE VAL2 IS NULL THEN val1 WHEN val1> val2 THEN val1 ELSE val2 END' for MAX(val1,val2)'。 –