Java Reference

In-Depth Information

If the concatenation of
u.firstName
and
u.lastName
doesn't result in
ViperAd-

min
, then the condition will return
FALSE
.

You can use the
SUBSTRING
function to determine if the first three letters of

u.lastName
start with VIP:

WHERE SUBSTRING(u.lastName, 1, 3) = 'VIP'

The name of each string function is a good indicator of the functional operation it can per-

form. The direct analog of string functions is arithmetic functions. We'll look at what JPQL

supports in this area next.

Arithmetic functions

Although math is rarely used to perform CRUD operations, it's useful when trying to ma-

nipulate data for reports. JPQL supports only a bare minimum set of functions in this re-

gard, and some vendors may choose to add functions to enhance their reporting capabil-

ities. As with all vendor-specific features, be aware that using them will make your code

less portable should you decide to change vendors in the future. You can use arithmetic

functions supported by JPQL.

Table 11.6. JPQL arithmetic functions

Arithmetic functions

Description

ABS(simple_arithmetic_expression)

Returns the absolute value of simple_arithmetic_expression

Returns the square root value of simple_ arithmet-

ic_expression as a double

SQRT(simple_arithmetic_expression)

Returns the result of executing the modulus operation for

num, div

MOD(num, div)

SIZE(collection_value_path_expression)

Returns the number of items in a collection

Most of the arithmetic functions are self-explanatory, such as this example of
SIZE
:

WHERE SIZE(c.items) = 5

This expression will return
TRUE
when the
SIZE
of
c.items
is
5
and
FALSE
otherwise.