The database evaluates each search value only before comparing it to expr, rather than evaluating all search values before comparing any of them with expr. Oracle Database uses short-circuit evaluation. The search, result, and default values can be derived from expressions.
If the first search-result pair are numeric, then Oracle compares all search-result expressions and the first expr to determine the argument with the highest numeric precedence, implicitly converts the remaining arguments to that data type, and returns that data type. The string returned is of VARCHAR2 data type and is in the same character set as the first result parameter. expr, search, and result can be any of the data types CHAR, VARCHAR2, NCHAR, or NVARCHAR2. If expr and search are character data, then Oracle compares them using nonpadded comparison semantics. The arguments can be any of the numeric types ( NUMBER, BINARY_FLOAT, or BINARY_DOUBLE) or character types. If default is omitted, then Oracle returns null. If no match is found, then Oracle returns default. If expr is equal to a search, then Oracle Database returns the corresponding result. DECODE compares expr to each search value one by one.