**Summary**: in this tutorial, you will learn how to use the Db2 `OR`

operator to query rows that satisfy either or both predicates of the search condition.

## Introduction Db2 `OR`

operator

The `OR`

operator is a logical operator that combines two Boolean expressions or predicates. the `OR`

operator is often used in the `WHERE`

clause of the `SELECT`

, `UPDATE`

, and `DELETE`

statements to specify a search condition for rows to be selected, updated, and deleted.

Here is the syntax of the `OR`

operator:

1 | boolean_expression1 OR boolean_expression2 |

In this syntax, the `boolean_expression1`

and `boolean_expression2`

are the Boolean expressions that evaluate to true, false, and unknown.

The following table shows the result when combining true, false, and unknown values using the `OR`

operator:

TRUE | FALSE | UNKNOWN | |
---|---|---|---|

TRUE | TRUE | TRUE | TRUE |

FALSE | TRUE | FALSE | UNKNOWN |

UNKNOWN | TRUE | UNKNOWN | UNKNOWN |

If you use both `OR`

and `AND`

operators in an expression, Db2 always evaluates the `AND`

operator first. To change the order of evaluation, you can use the parentheses.

To negate the `OR`

operator, you use the `NOT`

operator as follows:

1 | NOT (boolean_expression1 OR boolean_expression2) |

## Db2 `OR`

operator examples

Let’s use the `books`

table from the sample database to demonstrate the `OR`

operator.

### 1) Db2 `OR`

operator example

This example uses the `OR`

operator to find the books that have the number of pages 500 or 1,000:

1 2 3 4 5 6 7 8 9 | SELECT title, total_pages FROM books WHERE total_pages = 500 OR total_pages = 1000 ORDER BY total_pages; |

The query scans every row and returns the rows whose value in the `total_pages`

column is 500 or 1000.

Here is the result set:

Note that you can use the `IN`

operator to achieve the same result:

1 2 3 4 5 6 7 8 9 | SELECT title, total_pages FROM books WHERE total_pages IN (500, 1000) ORDER BY total_pages; |

### 2) Using multiple Db2 `OR`

operators example

This example uses two `OR`

operators to find books whose ratings are 5 and the number of pages is 500 or 1000:

1 2 3 4 5 6 7 8 9 10 11 | SELECT title, total_pages, rating FROM books WHERE total_pages = 500 OR total_pages = 1000 OR rating = 5 ORDER BY total_pages; |

Here is the output:

### 3) Using Db2 `OR`

operator with parentheses

If you use the `OR`

and `AND`

operators with more than two conditions, you can use parentheses to explicitly specify the evaluation order.

The following example uses both `OR`

and `AND`

operators to find books that satisfy either of the following conditions:

- The number of pages is greater than 800 and less than 1,000
- The rating is greater than 4.7

Here is the query:

1 2 3 4 5 6 7 8 9 10 11 12 | SELECT title, total_pages, rating FROM books WHERE(total_pages > 800 AND total_pages < 1000) OR rating > 4.7 ORDER BY rating, total_pages; |

The following picture shows the partial output:

### 4) Using Db2 `NOT OR`

operator example

This example uses the `NOT OR`

operator to find books that have the number of pages greater than or equal 1000 and rating less than or equal 4:

1 2 3 4 5 6 7 8 9 10 | SELECT title, rating, total_pages FROM books WHERE NOT (rating > 4 OR total_pages < 1000) ORDER BY rating desc, total_pages desc; |

Here is the partial result set:

Note that based on the De Morgan’s laws, NOT (A OR B) is equivalent to (NOT A AND NOT B). In this case, the following conditions are equivalent:

1 | NOT (rating > 4 OR total_pages < 1000) |

and

1 | rating <= 4 AND total_pages >= 1000) |

In this tutorial, you have learned how to use the Db2 `OR`

operator to query rows that satisfy either or both predicates of the search condition.