Wie um zu überprüfen, ob Zahl ist NaN
Brauche ich, um zu testen, ob eine numerische/float-Wert in PostgreSQL ist keine Zahl (NaN). Beachten Sie, dass "PostgreSQL behandelt NaN
- Werte als gleich", so diese C++ - trick nicht funktioniert. Wie ich bin nicht zu sehen, jede isnan
Funktion in PostgreSQL 9.3, hier ist mein bester Versuch zu machen:
create or replace function isnan(double precision) returns boolean as
$$select $1::text = 'NaN'::text$$ language sql;
Gibt es eine bessere Möglichkeit zu testen, für NaN
s?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vergleichen Sie einfach für die Gleichstellung:
als, pro die docs, die Sie verknüpft, Pg behandelt
NaN
s als gleich. Ich bin überrascht, da es richtig behandeltNULL
als nicht gleich wie jede andereNULL
, und zu erwarten habenNaN
=NaN
zurückNULL
, aber ... naja, es funktioniert.Oder wenn Sie eine Funktion:
float
==float8
==double precision
(zumindest zum aktuellen Zeitpunkt), würde Sie wahrscheinlich wollen zu Holen ein synonym und verwenden Sie es konsequent.Alle NaN-Wert mit einem minus-Zeichen ist noch immer ein NaN-Wert (genauso wie eine null), so können Sie versuchen, diese:
oder:
Soweit PostgreSQL behandelt NaN-Werte größer war als alle anderen nicht-NaN-Werte, folgender trick möglich ist:
Für Google BigQuery (und vielleicht auch andere sql-Server die es gibt), verwenden Sie die folgende