2011-08-30 13 views
11

Wybieram maksimum kolumny z tabeli. Ale jest jeden problem: jeśli w tabeli nie ma żadnych wierszy, zwracana jest wartość null.Czy istnieje odpowiednik funkcji Oracle NVL w Mysql?

Chcę użyć funkcji, która zwróci pewną wartość, jeśli wynik jest zerowy. Na przykład z Oracle jest funkcja NVL, która daje pewną wartość, jeśli kolumna ma wartość null. Czy istnieje odpowiednik funkcji w MySQL?

Odpowiedz

16
select coalesce(column_name, 'NULL VALUE') from the_table 
+3

To jest standardowa wersja NVL dla SQL i działa również w Oracle (od 9i, jak sądzę). – Thilo

+0

Pytanie z pytaniem _ "Ale jest jeden problem: jeśli w tabeli nie ma żadnych wierszy, to zwraca wartość null." _ Jednakże, koalescencja nie rozwiązuje tego problemu - jeśli nie zostaną zwrócone żadne wiersze, wówczas nie są zwracane żadne wiersze. Wszystko, co robi, to zapewnienie wartości innej niż null dla pewnej kolumny * pod warunkiem, że niektóre wiersze są zwracane * Ale potem, ani nie robi nvl w oracle :) – Adam

+0

@Adam. Funkcja agregująca 'max' zwróci pojedynczy wiersz (z wartością zerową), nawet jeśli w tabeli nie ma żadnych wierszy. Cała ta koalescencja (i wszystkie zadawane pytania) zmieniają wartość zerową na wartość domyślną. – Thilo

Powiązane problemy