Nvl sql что это

от admin

NVL ФУНКЦИЯ

Oracle/PLSQL функция NVL позволяет заменить значение, когда встречается Null значение.

Синтаксис

Синтаксис Oracle/PLSQL функции NVL:

Параметры или аргументы

string1 строка, которая проверяется на Null значение.

replace_with возвращаемое значение, если string1 является Null.

Применение

Функцию NVL можно использовать в следующих версиях Oracle/PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i

Пример

Рассмотрим несколько примеров функции Oracle NVL и изучим, как использовать функцию NVL в Oracle/PLSQL.

Nvl sql что это

NVL lets you replace null (returned as a blank) with a string in the results of a query. If expr1 is null, then NVL returns expr2 . If expr1 is not null, then NVL returns expr1 .

The arguments expr1 and expr2 can have any data type. If their data types are different, then Oracle Database implicitly converts one to the other. If they cannot be converted implicitly, then the database returns an error. The implicit conversion is implemented as follows:

If expr1 is character data, then Oracle Database converts expr2 to the data type of expr1 before comparing them and returns VARCHAR2 in the character set of expr1 .

If expr1 is numeric, then Oracle Database determines which argument has the highest numeric precedence, implicitly converts the other argument to that data type, and returns that data type.

Table 2-8 for more information on implicit conversion and «Numeric Precedence» for information on numeric precedence

«COALESCE» and «CASE Expressions» , which provide functionality similar to that of NVL

Appendix C in Oracle Database Globalization Support Guide for the collation derivation rules, which define the collation assigned to the return value of NVL when it is a character value

The following example returns a list of employee names and commissions, substituting «Not Applicable» if the employee receives no commission:

Nvl sql что это

In this article, we’ll be discussing some powerful SQL general functions, which are – NVL, NVL2, DECODE, COALESCE, NULLIF, LNNVL and NANVL.

These functions work with any data type and pertain to the use of null values in the expression list. These are all single row function i.e. provide one result per row.

  • NVL(expr1, expr2) : In SQL, NVL() converts a null value to an actual value. Data types that can be used are date, character and number. Data type must match with each other i.e. expr1 and expr2 must of same data type.
    Syntax –

expr1 is the source value or expression that may contain a null.
expr2 is the target value for converting the null.

Syntax –

expr1 is the source value or expression that may contain null
expr2 is the value returned if expr1 is not null
expr3 is the value returned if expr1 is null

Syntax –

Syntax –

Syntax –

Syntax –

Now the above examples does not considered those employees who have no commission at all.
To include them as well we use LNNVL()

Syntax –

Consider the following table named nanvl_demo :

Как использовать функции NVL и NVL2 в Oracle SQL — Digital Owl’s Prose

Как специалист или разработчик SQL в какой-то момент вы встретите пресловутое значение NULL (или, как некоторые говорят, маркер). NULL ‘может быть очень сложно понять, пока вы не поймете их наполовину. К счастью, у всех популярных поставщиков SQL есть различные функции, которые помогают работать с NULL s. В этом посте я расскажу о двух таких функциях, которые есть в базе данных Oracle: NVL() и NVL2() .

Если вам нравится содержание, написанное здесь, обязательно поделитесь этим блогом и своими любимыми сообщениями с другими людьми, которым он также может быть полезен или им понравится. Поскольку кофе — мой любимый напиток, вы можете даже купить мне его, если хотите!

В качестве примеров в этом посте я использую хорошо известную базу данных Oracle HR.

Таблица LOCATIONS содержит информацию о фиктивных адресах, как показано в следующем запросе и наборе результатов:

Функция Oracle NVL ()

В нескольких строках хранится NULL в столбце STATE_PROVINCE. Если вы создаете отчет или какое-либо другое отображение для конечного пользователя на основе этих данных, вероятно, последнее, что вы хотите сделать, — это вывести NULL в результатах. Конечно, вы могли бы использовать выражение CASE и предоставить что-нибудь более значимое.

Однако это один из множества вариантов использования функции NVL() . NVL() синтаксис очень простой:

С NVL() , если 1-е выражение равно NULL , возвращается 2-е выражение. В противном случае возвращается 1-е выражение.

Совет от профессионалов: Оба параметра должны быть предоставлены и должны иметь совпадающие типы данных.

Я взял за правило писать еженедельное электронное письмо о SQL / PHP, которое я изучаю и которое меня интересует. Если это похоже на то, частью чего вы хотели бы стать, используйте эту форму подписки и подпишитесь. Спасибо!

Читать:
Как найти наименьшее число в массиве

Давайте напишем запрос и отобразим «UNKNOWN_PROVINCE» вместо NULL для столбца STATE_PROVINCE, где этот столбец равен NULL .

Как показано в результатах запроса, везде, где значение столбца STATE_PROVINCE равно NULL , возвращается ‘UNKNOWN_PROVINCE’. Для тех строк, у которых нет NULL , сохраняется исходное значение столбца.

Функция Oracle NVL () в математических вычислениях

Хорошо известно, что математические вычисления с любыми NULL значениями всегда возвращают NULL . Чтобы ограничить это, одним из вариантов является использование такой функции, как NVL() , и использование альтернативного значения вместо NULL там, где это необходимо, чтобы возвращались фактические математические вычисления.

Для более удобного управления набором данных я отфильтрую таблицу EMPLOYEES только на те строки с JOB_ID из «SH_CLERK»:

Мы видим, что все строки имеют NULL для столбца COMMISSION_PCT. Если бы мы вычисляли размер комиссии для каждой строки в отчете, в этих строках отображалось бы простое старое скучное NULL :

Однако, используя NVL() , мы можем предоставить числовое значение 0 (ноль) (или другое) для выполнения вычислений. В этом примере математика возвращает 0 (ноль), который вместо этого отображается:

Функция Oracle NVL2 ()

Альтернативой для NVL() является функция NVL2() с аналогичным названием, которая принимает 3 параметра:

NVL2(expression, if_not_null, if_null)

NVL2() позволяет возвращать значение независимо от того, оценивается ли выражение 1-го аргумента как NULL или нет.

Основываясь на примере с использованием столбца STATE_PROVINCE, в этом запросе мы будем использовать NVL2() и отображать ‘KNOWN_PROVINCE’ для тех строк, где STATE_PROVINCE значение столбца не равно NULL . Как и раньше, в строках с NULL будет отображаться «UNKNOWN_PROVINCE»:

В этом наборе результатов NVL2() возвращает 1 из 2 доступных значений из параметров if_not_null или if_null в зависимости от того, содержит ли указанная строка NULL для указанного выражения.

Функция Oracle NVL2 () в математических вычислениях

Как и в NVL() примере математических вычислений, мы также можем использовать NVL2() в аналогичном смысле. Но с NVL2() у нас есть больше возможностей.

Обратимся к следующему произвольному запросу:

Представьте, что вы хотите применить COMMISSION_PCT любых строк к вычислению с помощью его SALARY. Если ЗАРПЛАТА не NULL , используйте это значение. Тем не менее, если строка содержит NULL для COMMISSION_PCT, все равно примените какое-то значение. Скажем, в этом примере примените значение COMMISSION_PCT 0,05 для всех строк, содержащих NULL .

Опять же, выражение CASE (среди прочего) может использоваться в этом типе запроса. Однако, на мой взгляд, использование NVL2() более лаконично, но все же обеспечивает некоторую гибкость.

Oracle NVL () и NVL2 () Заключение и дальнейшее чтение

Хотя некоторые из примеров в этом посте слишком упрощены, мы надеемся, что они дадут вам представление о том, как вы можете использовать NVL() и NVL2() в своих запросах.

Напишите мне комментарий и расскажите о некоторых интересных способах использования функций NVL() или NVL2() .

    (внешняя ссылка) () (внешняя ссылка)

Если у вас есть вопросы или вы видите что-то неправильное в коде, оставьте комментарий в разделе комментариев ниже. Спасибо.

Похожие сообщения вам понравятся
    (внешняя ссылка) (внешняя ссылка) (внешняя ссылка) (внешняя ссылка)

Нравится то, что вы прочитали? Видите что-нибудь неправильное? Прокомментируйте, пожалуйста, ниже и спасибо за чтение .

Призыв к действию!

Спасибо, что нашли время прочитать этот пост. Я искренне надеюсь, что вы открыли для себя что-то интересное и поучительное. Пожалуйста, поделитесь своими выводами здесь с кем-нибудь, кого вы знаете, кто тоже получит от этого такую ​​же ценность.

Посетите страницу Портфолио-проекты, чтобы увидеть сообщения в блоге / технические статьи, которые я написал для клиентов.

Чтобы получать уведомления по электронной почте (Никогда не спамить) от этого блога (Проза цифровой совы) о последних публикациях в блоге по мере их публикации, пожалуйста, подпишитесь (по собственному желанию), нажав кнопку Нажмите, чтобы подписаться! На боковой панели на домашняя страница! (Не стесняйтесь в любое время просмотреть страницу политики конфиденциальности Digital Owl’s Prose по любым вопросам, которые могут у вас возникнуть: обновления по электронной почте, подписка, отказ, контактные формы и т. Д.)

Обязательно посетите страницу Best Of, где собраны мои лучшие сообщения в блоге.

Джош Отвелл хочет учиться и расти как разработчик SQL и блогер. Другие любимые занятия находят его, уткнувшись носом в хорошую книгу, статью или командную строку Linux. Среди них он разделяет любовь к настольным ролевым играм, чтению фэнтезийных романов и проведению времени с женой и двумя дочерьми.

Отказ от ответственности: примеры, представленные в этом посте, представляют собой гипотетические идеи о том, как достичь аналогичных результатов. Это не самое лучшее решение. Большинство, если не все, из представленных примеров выполняются в среде рабочей станции для личного развития / обучения и не должны считаться производственными или готовыми к использованию. Ваши конкретные цели и потребности могут отличаться. Используйте те методы, которые лучше всего подходят для ваших нужд и целей. Мнения мои собственные.

Похожие статьи