В общем, и в SoQoL, и в Oracle и в PostgreSQL реализация данной функции схожа: - она имеет одинаковый синтаксис NULLIF (<выражение1>, <выражение2>); - допускает для аргументов значения любого типа данных; - тип данных результата соответствует типу данных первого аргумента. И если посмотреть элементарный пример, то и результаты во всех озвученных СУБД будут одинаковые: select nullif (10, 5); Результат: 10, т.к. значения аргументов не равны select nullif('admin', 'admin'); Результат: NULL, так как значения равны Но есть момент в деталях реализации NULLIF в Oracle, который проявляется при иных случаях применения функции. Возьмём простой генератор псевдослучайных чисел, который возвращает либо 0, либо 1: dbms_random.value (0, 2) И попробуем получить ряд целых случайных чисел или NULL, если сгенерированное число = 0. Записываем и исполняем несколько раз: select nullif (trunc (dbms_random.value(0, 2)), 0) FROM dual; Результат: 1 Результат: NULL Результат: 0 Но если сгенерированное число 0,
Про функцию NULLIF
7 декабря 20237 дек 2023
58
1 мин