**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:

```
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:

```
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:

```
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:

```
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:

```
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:

```
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:

```
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:

```
NOT (rating > 4 OR total_pages < 1000)
```

and

```
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.