Leider gibt es keine Funktion für Ihr Verhalten, aber es ist einfach, Ihre eigene Funktion zu erstellen, wenn Sie die Berechtigungen dafür haben, sonst könnten Sie auch eine IF THEN ELSE
zu Ihrer Abfrage hinzufügen, wie Sie bereits gezeigt haben, aber das wäre nein Beantworten Sie Ihre Frage. Wenn Sie eine Funktion erstellen wollen, dann haben Sie das Problem, dass Sie explizite Parametertypen benötigen und mit mysql ist es leider auch nicht funktional eine Funktion zu überlasten (gleicher Funktionsname aber unterschiedliche Parametertypen). Sie benötigen also für verschiedene Typen unterschiedliche Funktionen mit unterschiedlichen Funktionsnamen. Es würde so aussehen, dass:
CREATE FUNCTION `fmap_varchar`(e1 VARCHAR(255), e2 VARCHAR(255))
RETURNS VARCHAR(255) DETERMINISTIC
RETURN IF(e1 IS NULL, NULL, e2);
Sie würden vielleicht auch haben für die richtige charset zu kümmern, die Sie auch bei der Rückkehr-Klausel angeben.
Und die Lösung mit einer Abfrage, die Sie bereits haben:
SELECT IF(something IS NULL, NULL, anotherthing) FROM your_table;
@GordonLinoff Ich denke, es ein Missverständnis ist. 'coalesce' gibt den ersten Nicht-Null-Wert oder null zurück, wenn es keinen Nicht-Null-Wert gibt, richtig? Ich möchte einen Nicht-Null-Wert transformieren oder null zurückgeben, wenn es null ist. Es ist ähnlich dem 'fmap' Verhalten auf' Maybe' Werten in Haskell – FtheBuilder
Nein, es gibt keine Funktion dafür, aber Sie können wahrscheinlich Ihre eigenen schreiben. – dnoeth
@dnoeth Es ist die Antwort. Sehr einfach;) – FtheBuilder