Изглежда, че искате нещо като
SELECT least( (case when col1 is null or col1 = 0 then 999999999 else col1 end),
(case when col2 is null or col2 = 0 then 999999999 else col2 end),
(case when col3 is null or col3 = 0 then 999999999 else col3 end) )
FROM <<table name>>
където 999999999 е някаква числова стойност, която е достатъчно голяма, за да бъде винаги по-голяма от всяка друга валидна стойност. Ако е възможно и трите колони да имат NULL
или 0 стойности, тогава вероятно бихте искали да добавите допълнителна проверка, че ако резултатът от това least
функция е 999999999, че връщате 0 или NULL
или каквото друго има смисъл.
@X-Zero беше любезен да състави работещ пример за SQL Fiddle
на тази конструкция. Имайте предвид, че неговият пример филтрира редовете, където и трите колони имат или NULL
или 0 стойности.