Привет. Мне нужна помощь, чтобы понять часть декодирования запроса, которая выглядит примерно так:
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
Поскольку этот запрос возвращает только 1 запрос, я немного озадачен тем, как ORDER BY работает с различными несуществующими номерами столбцов, предоставленными DECODE. Запрос работает как курсор, чтобы найти уникальный код для рассматриваемого животного, учитывая, что мнемоническое животное относится к текущему типу животных и типу, который будет соответствовать.
Я думаю, что DECODE возвращает разные номера столбцов в ORDER BY, и я попытался поэкспериментировать с другим простым одиночным столбцом, который выбирает некоторые другие таблицы с ORDER на '-1', '0' и '100' и ORDER, похоже, не работает для 0 и 100. Почему он работает с -1 или любым другим числом?
Надеюсь, кто-то может объяснить это мне. Спасибо!