# Basic Expressions and Operators¶

These building blocks are split into *arithmetic* and *boolean* expressions and operators.

## Arithmetic Expressions and Operators¶

A SQL developer can use arithmetic *operators* to construct arithmetic expressions.
For instance, `10 + 5`

is an expression that has two operands (`10`

and `5`

) with the addition operator (`+`

) in between them, which is referred to as *infix* position.
Another possible position is *postfix*, which applies, for instance, to the *factorial* operation, like `10!`

.
Finally, the *prefix* position is used by, for instance, the bitwise NOT operator, such as `~1`

.

The following table shows the basic operators that ODAS supports.

Operator | Position | Description |
---|---|---|

`*` |
Infix | Multiply operator |

`/` |
Infix | Division operator |

`%` |
Infix | Module operator |

`DIV` |
Infix | Integer division operator |

`+` |
Infix | Addition operator |

`-` |
Infix | Subtraction operator |

`!` |
Postfix | Factorial operator |

`&` |
Infix | Bitwise AND operator |

`|` |
Infix | Bitwise OR operator |

`^` |
Infix | Bitwise XOR operator |

`~` |
Prefix | Bitwise NOT operator |

**Example:** Simple arithmetic expressions

```
> select 10 * 10;
100
> select 10!;
3628800
> SELECT 5 & ~1;
4
```

SQL is quite limited in its available operators, but is commonly extended to more complex ones using functions.

## Boolean Expressions and Operators¶

In Boolean algebra, instead of using numbers, the allowed values are only `true`

and `false`

.
The ODAS supported Boolean operator are shown in the following table, using the same position notation as explained in the previous section.

Operator | Position | Description |
---|---|---|

`AND` |
Infix | Boolean AND operator |

`OR` |
Infix | Boolean OR operator |

`NOT` |
Prefix | Boolean NOT operator |

**Example:** Boolean expressions

```
> SELECT true AND true;
true
> SELECT true AND false;
false
> SELECT (10 < 100) AND ("foo" = "foo");
true
```