FBUDF | INVL(VALUE1, VALUE2) |
Linux, Win32 | Эта функция пытается повторить функцию Oracle NVL() только для числовых типов с фиксированной точкой. Она возвращает указанное непустое значение, если заданный столбец имеет значение NULL |
Аргументы | VALUE1: столбец или выражение, включающее столбец. Типы с плавающей точкой не поддерживаются. При необходимости используйте в вашем выражении CAST() для преобразования значения в числовой тип. VALUE2: выражение или константа, которая будет возвращаемым значением, если VALUE1 дает NULL |
Возвращаемое значение | Непустое значение. Если VALUE1 не является NULL, то оно будет возвращаемым значением; иначе будет возвращаться VALUE1. Если и VALUE1, и VALUE2 имеют значение NULL, то будет возвращено значение NULL |
Замечания | Логически эта функция эквивалентна простой форме функции COALESCE О версии 1.5, когда она используется со столбцом числового типа с фиксированной точкой, а именно COALESCE(VALUE1, VALUE2) . Она должна рассматриваться как нерекомендуемая для Firebird версии 1.5 и выше. Внешняя функция iNVL() существует в трех реализациях: две для 32-битовых и 16-битовых типа (invl и dnvi), а третья для 64-битовых типов (i64nvi). Если вы хотите использовать ее с любыми числовыми типами с фиксированной точкой, объявите все реализации. Объявления можно найти в скрипте fbudf.sql в каталоге /UDF вашей инсталляции Firebird. Не объявляйте реализацию i64nvi для баз данных, которые не поддерживают 64-битовые числа - например, для не перенесенной базы данных InterBase 5 |
Пример | Следующий запрос возвращает 0, если STOCK имеет значение NULL: SELECT PRODUCT ID, PRODUCT NAME, INVL(STOCK, 0) FROM PRODUCTS; |
Связанные или похожие функции | См. также sNVL(), iNullIf(), внутреннюю функцию COALESCE() |