This page discusses - 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 19is equivalent to

p.age >= 15 AND p.age <= 19

p.age NOT BETWEEN 15 AND 19is 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'

asentence.word LIKE 'l_se'

aword.underscored LIKE '\_%' ESCAPE '\'

address.phone NOT LIKE '12%3'

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`Visit http://java.boot.by for the updates.

Ads