How to Use nullif() in PostgreSQL

The NULLIF() function in PostgreSQL is a powerful tool used to handle null values in your queries. It compares two expressions and returns NULL if they are equal; otherwise, it returns the first expression.

Syntax of nullif()

The basic syntax of the NULLIF() function is as follows:

NULLIF(expression1, expression2)

Where expression1 and expression2 are the two values being compared. If they are equal, the function returns NULL; if they are different, it returns the value of expression1.

Examples

Example 1: Basic nullif() Usage

Let's say you have a table employees with the columns salary and bonus. You can use NULLIF() to avoid returning a salary value of 0:


SELECT employee_id, salary, bonus,
       NULLIF(salary, 0) AS salary_non_zero
FROM employees;
                                

In this example, if salary is equal to 0, NULLIF() will return NULL instead of 0.

Example 2: Comparing Two Columns

If you want to check if two columns have the same value, you can use NULLIF() to return NULL if they are equal:


SELECT employee_id, department, role,
       NULLIF(department, role) AS different_dept_role
FROM employees;
                                

Here, if the department and role are the same, the function will return NULL; otherwise, it will return the value of department.

Why Use NULLIF?

The NULLIF() function is especially useful for:

  • Avoiding division by zero errors in queries (when using it with arithmetic operations).
  • Handling edge cases where specific values are problematic and you want to replace them with NULL.
  • Creating more readable and cleaner SQL queries without the need for complex CASE statements.

Conclusion

The NULLIF() function in PostgreSQL is a simple yet effective way to handle edge cases where two expressions may be equal. By using it correctly, you can clean up your data and make your queries more efficient and readable.