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)'。 –