Ciao, ho bisogno di aiuto per capire la parte di decodifica di una query che va come la seguente.ORDINA DA DECODE (BLAH, [NUMERO COLONNA]) su una singola query di colonna. Come funziona?
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
Poiché questa query restituisce solo 1 domanda, io sono un po 'perplesso su come ORDER BY opere con i diversi numeri di colonna non-esistenti forniti da DECODE. La query funziona come un cursore per trovare un codice univoco per l'animale in questione, dato un codice mnemonico animale il tipo di animale corrente e il tipo da abbinare.
Sto pensando che DECODE restituisca i diversi numeri di colonna a ORDER BY con e ho provato a sperimentare con una singola colonna semplice diversa seleziona su alcune altre tabelle con ORDER di '-1', '0' e '100' e l'ordine da sembra fallire per 0 e 100. Perché funziona con -1 o uno qualsiasi degli altri numeri?
Spero che qualcuno possa spiegarmi questo. Grazie!
Grazie per aver risposto! Quindi vuol dire che se la riga corrente è COGAR IE BIG CAT, verrà impostata come 0, che verrà sempre inserita nella seconda riga e quando incontrerò una riga "Gatto domestico" IE "CAT" sarà impostato come -1 IE sarà in cima al mio set. E se sono su una fila che non ha alcuna search_priority, sarà in fondo alla lista IE 100. La mia comprensione è corretta? – Azeworai
sì, questa è l'idea. Ecco un altro post che descrive la stessa cosa: http://www.orindasoft.com/public/blog/2007/07/oracles-decode-funtion.html –