## Identify correct and incorrect conditional expressions, BETWEEN expressions, IN expressions, LIKE expressions, and comparison expressions.

Conditional expressions

Conditional expressions are composed of other conditional expressions, comparison operations, logical operations, path expressions that evaluate to boolean values, and boolean literals.

Arithmetic expressions can be used in comparison expressions. Arithmetic expressions are composed of other arithmetic expressions, arithmetic operations, path expressions that evaluate to numeric values, and numeric literals.

Arithmetic operations use Java numeric promotion.

Standard bracketing () for ordering expression evaluation is supported.

BETWEEN expressions

The syntax for the use of the comparison operator [NOT] BETWEEN in an conditional expression is as follows:

arithmetic_expression [NOT] BETWEEN arithmetic-expr AND arithmetic-expr

```
p.age BETWEEN 15 AND 19

```
is equivalent to
```
p.age >= 15 AND p.age <= 19

```

```
p.age NOT BETWEEN 15 AND 19

```
is equivalent to
```
p.age < 15 OR p.age > 19

```

IN expressions

The syntax for the use of the comparison operator [NOT] IN in a conditional expression is as follows:

single_valued_path_expression [NOT] IN (string-literal [, string-literal]* )

The single_valued_path_expression must have a String value.

```o.country IN ('UK', 'US', 'BY')
```
is equivalent to
```(o.country = 'UK') OR (o.country = 'US') OR (o.country = 'BY')
```

```o.country NOT IN ('UK', 'US', 'BY')
```
is equivalent to
```NOT ((o.country = 'UK') OR (o.country = 'US') OR (o.country = 'BY'))
```

LIKE expressions

The syntax for the use of the comparison operator [NOT] LIKE in a conditional expression is as follows:

single_valued_path_expression [NOT] LIKE pattern-value [ESCAPE escape-character]

The single_valued_path_expression must have a String value. The pattern-value is a string literal in which an underscore (_) stands for ANY SINGLE character, a percent (%) character stands for ANY SEQUENCE of characters (including the empty sequence), and all other characters stand for themselves. The optional escape-character is a single character string literal and is used to escape the special meaning of the underscore and percent characters in pattern-value.

```address.phone LIKE '12%3'
```
TRUE for '123' '12993', FALSE for '1234'.

```asentence.word LIKE 'l_se'
```
TRUE for 'lose', FALSE for 'loose'.

```aword.underscored LIKE '\_%' ESCAPE '\'
```
TRUE for '_foo', FALSE for 'bar'.

```address.phone NOT LIKE '12%3'
```
TRUE for '1234', FALSE for '123' and '12993'.

NOTE, input parameters CANNOT be used in LIKE expression.

NULL comparison expressions

The syntax for the use of the comparison operator IS NULL in a conditional expression is as follows:

single_valued_path_expression IS [NOT ] NULL

A null comparison expression tests whether or not the single valued path expression is a NULL value. Path expressions containing NULL values during evaluation return NULL values.

EMPTY collection comparison expressions

The syntax for the use of the comparison operator IS EMPTY in an empty_collection_comparison_expression is as follows:

collection_valued_path_expression IS [NOT] EMPTY

This expression tests whether or not the collection designated by the collection-valued path expression is empty (i.e, has no elements). The collection designated by the collection-valued path expression used in an empty collection comparison expression MUST NOT be used in the FROM clause for the declaration of an identification variable. An identification variable declared as a member of a collection IMPLICITLY designates the existence of a non-empty relationship; testing whether the same collection is empty is CONTRADICTORY.

Collection member expressions

The syntax for the use of the comparison operator MEMBER OF in an collection_member_expression is as follows:

{single_valued_navigation | identification_variable | input_parameter } [NOT] MEMBER [OF] collection_valued_path_expression

This expression tests whether the designated value is a member of the collection specified by the collection-valued path expression.

String Functions:

• CONCAT(String, String) returns a String

• SUBSTRING(String, start, length) returns a String

• LOCATE(String, String [, start]) returns an int

• LENGTH(String) returns an int

Arithmetic Functions:

• ABS(number) returns a number (int, float, or double)

• SQRT(double) returns a double         