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

operator to combine multiple Boolean expressions.

## Introduction Db2 `AND`

operator

The `AND`

operator is a logical operator that combines two Boolean expressions or predicates. You use the `AND`

operator to specify that a search must satisfy both conditions.

The following illustrates the `AND`

operator syntax:

Code language: SQL (Structured Query Language) (sql)`boolean_expression1 AND boolean_expression2`

In this syntax, the `boolean_expression1`

and `boolean_expression2`

evaluate to true, false, and unknown.

This table displays the result when combining true, false, and unknown values using the `AND`

operator:

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

TRUE | TRUE | FALSE | UNKNOWN |

FALSE | FALSE | FALSE | FALSE |

UNKNOWN | UNKNOWN | FALSE | UNKNOWN |

If you use both `AND`

and `OR`

operators in an expression, Db2 evaluates the `AND`

operator first. However, you can change the order of evaluation using parentheses.

To negate the `AND`

operator, you use the `NOT`

operator as follows:

Code language: SQL (Structured Query Language) (sql)`NOT (boolean_expression1 AND boolean_expression2)`

The `AND`

operator is often used in the `WHERE`

clause to form the search condition for the `SELECT`

, `UPDATE`

, and `DELETE`

statement.

## Db2 `AND`

operator examples

Let’s use the `books`

table from the sample database for the demo.

### 1) Db2 `AND`

operator example

This example uses the `AND`

operator to find the books whose ratings are between 4 and 5:

```
SELECT
title,
rating,
total_pages
FROM
books
WHERE rating >= 4
AND rating <= 5
ORDER BY
title;
```

Code language: SQL (Structured Query Language) (sql)

Here is the result set:

### 2) Using multiple Db2 `AND`

operators example

This example uses two `AND`

operators to find books whose ratings are between 4 and 5 and the number of pages is greater than 1300:

```
SELECT
title,
rating,
total_pages
FROM
books
WHERE rating >= 4
AND rating <= 5 AND total_pages > 1300
ORDER BY
title;
```

Code language: SQL (Structured Query Language) (sql)

The output is as follows:

### 3) Using Db2 `AND`

operator with parentheses

If you use the `AND`

and `OR`

operators with more than two conditions, you can use parentheses to explicitly specify the order in which you want Db2 to evaluate the conditions.

This example uses both `AND`

and `OR`

operators to find books that satisfy both the following conditions:

- The number of pages is greater than 1,000 and less than 1,200
- Rating is greater than 4.7

Query:

```
SELECT
title,
total_pages,
rating
FROM
books
WHERE(total_pages < 1200
AND total_pages > 1000)
OR rating > 4.7
ORDER BY
rating DESC;
```

Code language: SQL (Structured Query Language) (sql)

If you move the parentheses, the meaning of the `WHERE`

clause can change significantly:

```
SELECT
title,
total_pages,
rating
FROM
books
WHERE total_pages < 1200
AND (total_pages > 1000
OR rating > 4.7)
ORDER BY
rating DESC;
```

Code language: SQL (Structured Query Language) (sql)

This query returns books that satisfy both the following conditions:

- The number of pages is less than 1200
- The number of pages is greater than 1000 or rating is greater than 4.7

### 4) Using Db2 `NOT AND`

operator example

This example uses the `NOT AND`

operator to find books that have the number of pages less than or equal 500 or rating greater than 4.7:

```
SELECT
title,
total_pages,
rating
FROM
books
WHERE NOT(total_pages > 500
AND rating < 4.7)
ORDER BY
total_pages DESC,
rating DESC;
```

Code language: SQL (Structured Query Language) (sql)

Here is the result set:

Notice that based on De Morgan’s laws, `NOT (A AND B)`

is equivalent to `(NOT A OR NOT B)`

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

operator to form a search condition that combines two Boolean expressions.