Det låter som att du vill ha något liknande
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>>
där 999999999 är något numeriskt värde som är tillräckligt stort för att det alltid kommer att vara större än något annat giltigt värde. Om det är möjligt att alla tre kolumnerna kommer att ha NULL
eller 0-värden, så skulle du förmodligen vilja lägga till en extra kontroll att om resultatet av den least
funktionen är 999999999 att du returnerar 0 eller NULL
eller vad som helst som är vettigt.
@X-Zero var vänlig nog att sätta ihop ett fungerande SQL Fiddle-exempel
av denna konstruktion. Observera att hans exempel filtrerar bort raderna där alla tre kolumnerna har antingen NULL
eller 0 värden.