嗨,我需要帮助来理解查询的解码部分,如下所示。
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 by '-1'、'0' 和 '100' 并且 ORDER by 似乎0 和 100 失败。为什么它适用于 -1 或任何其他数字?
希望有人可以向我解释这一点。谢谢!