Hallo Ich brauche Hilfe, um den Dekodierungsteil einer Abfrage zu verstehen, die etwas wie folgt geht.ORDER BY DECODE (BLAH, [SPALTENUMMER]) für eine einzelne Spaltenabfrage. Wie funktioniert es?
SELECT ax.animal_code
FROM raw_animal_xref ax,
animal_xref_type axt
WHERE ax.animal_mnemonic = l_animal_mnemonic -- Example 'COUGAR'
AND ax.animal_code_type = axt.animal_code_type
ORDER BY DECODE (animal_type,
l_type_to_be_matched, -1, -- Example 'CATS'
l_current_type, 0, -- Example 'BIG CATS'
nvl(axt.type_search_priority, 100)) ASC; -- EXAMPLE 'Big Cats' Priority is 1
Da diese Abfrage nur 1 Abfrage gibt, ich bin ein wenig ratlos, wie die ORDER BY Arbeiten mit den verschiedenen nicht-vorhandenen Spaltennummern von DECODE geliefert. Die Abfrage arbeitet als ein Cursor, um einen eindeutigen Code für das fragliche Tier zu finden, wobei eine Tier-Mnemonik dem aktuellen Tiertyp und dem Typ gegeben wird, mit dem sie übereinstimmen sollen.
Ich denke, dass DECODE die verschiedenen Spaltennummern zu ORDER BY zurückgibt und ich versuchte, mit einer anderen einfachen einzelnen Spalte zu experimentieren wählt auf einigen anderen Tabellen mit ORDER by '-1', '0' und '100' und die ORDER by scheint für 0 und 100 zu scheitern. Warum funktioniert es mit -1 oder einer der anderen Zahlen?
Hoffe jemand kann mir das erklären. Vielen Dank!
Danke für die Beantwortung! Es bedeutet also, wenn die aktuelle Zeile ein COUGAR IE BIG CAT ist, wird es als 0 gesetzt, was es immer in die zweite Zeile setzt, und wenn ich auf eine "Domestic Cat" Zeile IE "CAT" tippe, wird es sein eingestellt als -1 IE, wird es auf meinem Set sein. Und wenn ich in einer Reihe bin, die keine search_priority hat, wird es am Ende der Liste IE 100 sein. Ist mein Verständnis richtig? – Azeworai
Ja, das ist die Idee. Hier ist ein weiterer Beitrag, der das Gleiche beschreibt: http://www.orindasoft.com/public/blog/2007/07/oracles-decode-funtion.html –