- All Superinterfaces:
FieldOrRow
,FieldOrRowOrSelect
,Fields
,QueryPart
,Serializable
- All Known Subinterfaces:
QOM.RowSubquery
,Row1<T1>
,Row10<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10> Row11<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Row12<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Row13<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Row14<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Row15<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Row16<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Row17<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Row18<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Row19<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Row2<T1,
,T2> Row20<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Row21<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Row22<T1,
,T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Row3<T1,
,T2, T3> Row4<T1,
,T2, T3, T4> Row5<T1,
,T2, T3, T4, T5> Row6<T1,
,T2, T3, T4, T5, T6> Row7<T1,
,T2, T3, T4, T5, T6, T7> Row8<T1,
,T2, T3, T4, T5, T6, T7, T8> Row9<T1,
,T2, T3, T4, T5, T6, T7, T8, T9> RowN
Row value expressions are mainly useful for use in predicates, when comparing several values in one go, which can be more elegant than expanding the row value expression predicate in other equivalent syntaxes. This is especially true for non-equality predicates. For instance, the following two predicates are equivalent in SQL:
(A, B) > (X, Y)
(A > X) OR (A = X AND B > Y)
Example:
// Assuming import static org.jooq.impl.DSL.*;
using(configuration)
.select()
.from(CUSTOMER)
.where(row(CUSTOMER.FIRST_NAME, CUSTOMER.LAST_NAME).in(
select(ACTOR.FIRST_NAME, ACTOR.LAST_NAME).from(ACTOR)
))
.fetch();
Note: Not all databases support row value expressions, but many row value expression operations can be emulated on all databases. See relevant row value expression method Javadocs for details.
Instances can be created using DSL.row(Object...)
and overloads.
- Author:
- Lukas Eder
-
Method Summary
Modifier and TypeMethodDescription@NotNull QOM.UnmodifiableList
<? extends Field<?>> $fields()
Experimental query object model accessor method, see alsoQOM
.@NotNull Condition
Check if this row value expression contains noNULL
values.@NotNull Condition
isNull()
Check if this row value expression contains onlyNULL
values.int
size()
Get the degree of this row value expression.
-
Method Details
-
size
int size()Get the degree of this row value expression. -
isNull
Check if this row value expression contains onlyNULL
values.Row NULL predicates can be emulated in those databases that do not support such predicates natively:
(A, B) IS NULL
is equivalent toA IS NULL AND B IS NULL
-
isNotNull
Check if this row value expression contains noNULL
values.Row NOT NULL predicates can be emulated in those databases that do not support such predicates natively:
(A, B) IS NOT NULL
is equivalent toA IS NOT NULL AND B IS NOT NULL
Note that the two following predicates are NOT equivalent:
(A, B) IS NOT NULL
, which is the same as(A IS NOT NULL) AND (B IS NOT NULL)
NOT((A, B) IS NULL)
, which is the same as(A IS NOT NULL) OR (B IS NOT NULL)
-
$fields
Experimental query object model accessor method, see alsoQOM
. Subject to change in future jOOQ versions, use at your own risk.
-