Access/jet-äquivalent zu Oracle ' s decode
Gibt es ein äquivalent für Oracle ' s decode() in Access (oder Jet, für diese Angelegenheit).
Das problem, das ich mich vor: ich sollte Sortieren (Reihenfolge) ein resultset basiert im Grunde auf
einen status und ein Datum (mit alle Datensätze mit status = 2) am Ende.
In Oracle würde ich eher so etwas wie
select
...
from
...
where
..
order by
decode(status, 2, 0, 1),
date_column
Schreiben Sie eine benutzerdefinierte Funktion in VBA und dann rufen Sie von Ihrem SQL. Dies kann vorteilhaft sein, wenn Sie mit komplexen Möglichkeiten, andere Lösungen unter Schalter oder Iif unten am besten.
InformationsquelleAutor René Nyffenegger | 2009-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Am ähnlichsten ist die
SWITCH()
Funktion z.B.Oracle:
Access-Datenbank-Engine
Beachten Sie, dass mit der
SWITCH()
Funktion geben Sie den vollständigen Prädikat, jedes mal, Sie sind also nicht beschränkt auf die Verwendung nur supplier_id. Für den Standardwert verwenden Sie ein Prädikat, das offensichtlich für den menschlichen Leser, dass es WAHR ist z.B.1 = 1
oder in der Tat einfachTRUE
🙂Etwas, was möglicherweise nicht offensichtlich ist, dass die Logik in der
SWITCH()
Funktion nicht, Kurzschluss, was bedeutet, dass jeder Ausdruck in der Funktion müssen in der Lage sein werden ausgewertet, ohne Fehler. Wenn Sie die Logik erfordern, um Kurzschluss, dann müssen Sie verschachtelteIIF()
Funktionen.wenn Sie Beweise haben, dass es nicht Kurzschluss dann bitte posten irgendwo irgendwie und ich gelobe, es zu testen 🙂
Die
IIf
- Funktion in der Access-db-engine-Implementierung hat in der Tat Kurzschluss; VBAIIf
nicht. Wenn @user36800 will, um zu bestätigen, zeigen Sie empirisch, ist es einfach. In einer Access-Abfrage, dieSELECT IIf(True,2,1/0)
gibt 2 zurück. In VBA, die gleichenIIf
Ausdruck löst Laufzeitfehler 11: "Division durch null".Ich bin mit diesem problem jetzt, 2 Jahre nach meinem fehlerhafter Kommentar. Ja, empirisches testen zeigt, dass SQL-IIF ist Kurzschluss (und ich bin mit SQL-92). Es ist genau das Verhalten, die ich jetzt brauche.
InformationsquelleAutor onedaywhen
Können Sie versuchen, mit IIF. Sehen diese stackoverflow-Frage.
InformationsquelleAutor Pablo Santa Cruz
Denke ich könnte es vergleichen, wechseln, oder wählen Sie.
-- http://office.microsoft.com/en-us/access/HA012289181033.aspx
-- http://msdn.microsoft.com/en-us/library/aa262690%28VS.60%29.aspx
InformationsquelleAutor Fionnuala
Können Sie die
SWITCH
Funktion:Hinweis Semikolon und nicht Komma.
Beispiel oben funktioniert in Abfragen in MS Access 2010.
InformationsquelleAutor elrado