Функция NVL в SQL: примеры и синтаксис
Функция NVL в SQL (Null Value) используется для замены значений NULL в результирующем столбце на заданное значение. Она возвращает первое значение, если оно не NULL, или второе значение, если первое NULL.
Пример использования функции NVL:
SELECT last_name, NVL(commission_pct, 0) AS commission
FROM employees;
В приведенном примере мы выбираем столбец last_name из таблицы employees и столбец commission_pct, который может содержать значения NULL. Если commission_pct не равен NULL, его значение будет выведено в столбце commission. Если commission_pct равно NULL, в столбце commission будет выведено значение 0.
Также, функция NVL может использоваться в условиях запросов. Например:
SELECT *
FROM employees
WHERE NVL(salary, 0) > 5000;
В этом примере мы выводим все строки из таблицы employees, где значение столбца salary больше 5000. Если salary равно NULL, NVL заменит его на 0, и только затем произойдет сравнение с 5000.
Если несколько NULL значений должны быть заменены на одно значение, можно использовать функцию NVL внутри другой функции NVL. Например:
SELECT NVL(NVL(first_name, last_name), 'Unknown') AS name
FROM employees;
В этом примере, если first_name не равно NULL, будет выведено его значение. Если first_name равно NULL, но last_name не равно NULL, будет выведено значение last_name. Если и first_name и last_name равны NULL, будет выведено значение 'Unknown'.
Код на языке SQL может различаться в разных системах управления базами данных (СУБД). Примеры, приведенные выше, основаны на синтаксисе Oracle SQL. Однако, синтаксис функции NVL может отличаться в других СУБД, таких как MySQL:
- В MySQL функция NVL заменяется на функцию IFNULL:
SELECT IFNULL(salary, 0) AS salary
FROM employees;
- В SQL Server функция NVL заменяется на функцию ISNULL:
SELECT ISNULL(salary, 0) AS salary
FROM employees;
Это следует учитывать при использовании функции NVL в разных СУБД.
В конечном счете, функция NVL очень полезна, когда нужно заменить значение NULL на другое значение. Она позволяет эффективно работать с данными, избегая ошибок или неправильных результатов.