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

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

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

1 2 3 4 5 6 7 8 9 10 | SELECT title, rating, total_pages FROM books WHERE rating >= 4 AND rating <= 5 ORDER BY title; |

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:

1 2 3 4 5 6 7 8 9 10 | SELECT title, rating, total_pages FROM books WHERE rating >= 4 AND rating <= 5 AND total_pages > 1300 ORDER BY title; |

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:

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

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

clause can change significantly:

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

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:

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

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.