Preamble
Oracle/PLSQL LNNVL function is used in the WHERE SQL query sentence to evaluate the state when one of the operands may contain the value NULL.
Oracle/PLSQL syntax of LNNVL function
LNNVL( condition_id )
The LNNVL function will return to the following:
The condition is assessed as | LNNVL will return the value |
TRUE | FALSE |
FALSE | TRUE |
UNKNOWN | TRUE |
So, if we had two columns called qty and reorder_level, where qty = 20 and reorder_level IS NULL, the function LNNVL would return the following:
Condition | The condition is assessed as | LNNVL will return the value |
qty = reorder_level | UNKNOWN | TRUE |
qty IS NULL | FALSE | TRUE |
reorder_level IS NULL | TRUE | FALSE |
qty = 20 | TRUE | FALSE |
reorder_level = 20 | UNKNOWN | TRUE |
LNNVL function in the following versions of Oracle/PLSQL
Oracle 12c, Oracle 11g, Oracle 10g
The LNNVL function can be used in Oracle PLSQL.
Let’s have a look at an example. If we had a product table containing the following data:
PROD_ID | QTY_ID | REORDER_LEVEL_ID |
1000 | 20 | NULL |
2000 | 15 | 8 |
3000 | 8 | 10 |
4000 | 12 | 6 |
5000 | 2 | 2 |
6000 | 4 | 5 |
And we wanted to find all the products whose QTY was below REORDER_LEVEL, let’s run the next SQL query:
SELECT *
FROM prods
WHERE QTY < REORDER_LEVEL;
The request will return the following result:
PROD_ID | QTY_ID | REORDER_LEVEL_ID |
3000 | 8 | 10 |
6000 | 4 | 5 |
However, if we wanted to consider products that were lower than REORDER_LEVEL and REORDER_LEVEL had the value NULL, we would use the function LNNVL as follows:
SELECT *
FROM prods
WHERE LNNVL(QTY >= REORDER_LEVEL);
This will return the next result:
PROD_ID | QTY_ID | REORDER_LEVEL_ID |
1000 | 20 | NULL |
3000 | 8 | 10 |
6000 | 4 | 5 |
In this example, the resulting set also contains prod_id 1000, which has REORDER_LEVEL NULL.
LNNVL FUNCTION IN ORACLE SQL
About Enteros
Enteros offers a patented database performance management SaaS platform. It proactively identifies root causes of complex business-impacting database scalability and performance issues across a growing number of clouds, RDBMS, NoSQL, and machine learning database platforms.
The views expressed on this blog are those of the author and do not necessarily reflect the opinions of Enteros Inc. This blog may contain links to the content of third-party sites. By providing such links, Enteros Inc. does not adopt, guarantee, approve, or endorse the information, views, or products available on such sites.
Are you interested in writing for Enteros’ Blog? Please send us a pitch!
RELATED POSTS
Enteros in Healthcare: Database Performance, Cloud FinOps, and AIOps for Scalable Operations
- 24 February 2025
- Database Performance Management
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…
Enhancing Database Security in the Technology Sector with Enteros: A Proactive Approach to Performance and Protection
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…
Enteros and Generative AI in the Insurance Sector: Performance Monitoring and Enterprise Efficiency
- 21 February 2025
- Database Performance Management
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…
Enhancing Real Estate IT Efficiency with Enteros: Leveraging Observability, Cloud FinOps, and Database Performance Optimization
In the fast-evolving world of finance, where banking and insurance sectors rely on massive data streams for real-time decisions, efficient anomaly man…