sql >> Databáze >  >> RDS >> Oracle

SQL Výběr MIN hodnoty z řádkových dat s hodnotami null

Zní to, jako byste chtěli něco jako

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>>

kde 999999999 je nějaká číselná hodnota, která je dostatečně velká, aby byla vždy větší než jakákoli jiná platná hodnota. Pokud je možné, že všechny tři sloupce budou mít NULL nebo 0 hodnot, pak pravděpodobně budete chtít přidat další kontrolu, že pokud je výsledek least funkce je 999999999, vrátíte 0 nebo NULL nebo cokoli jiného, ​​co dává smysl.

@X-Zero byl tak laskav a dal dohromady funkční příklad SQL Fiddle tohoto konstruktu. Všimněte si, že jeho příklad odfiltruje řádky, kde všechny tři sloupce mají buď NULL nebo 0 hodnot.



  1. Fulltextové vyhledávání MySQL neodpovídá

  2. Zahrňte číslo řádku jako sloupec do INSERT MySQL

  3. Předat seznam<string> do parametru SQL

  4. Transparentní šifrování dat a vždy šifrováno