@Override @Deprecated public final <Z> Field<Z> decode(T search, Z result) { return DSL.decode(this, search, result); }
@Override @Deprecated public final <Z> Field<Z> decode(Field<T> search, Field<Z> result, Field<?>... more) { return DSL.decode(this, search, result, more); }
@Override @Deprecated public final <Z> Field<Z> decode(Field<T> search, Field<Z> result) { return DSL.decode(this, search, result); }
@Override @Deprecated public final <Z> Field<Z> decode(Field<T> search, Field<Z> result, Field<?>... more) { return DSL.decode(this, search, result, more); }
@Override @Deprecated public final <Z> Field<Z> decode(T search, Z result, Object... more) { return DSL.decode(this, search, result, more); }
@Override @Deprecated public final <Z> Field<Z> decode(Field<T> search, Field<Z> result) { return DSL.decode(this, search, result); }
/** * Initialise a {@link Case} statement. * <p> * Choose is used as a method name to avoid name clashes with Java's * reserved literal "case" * * @see Case */ @Support public static Case choose() { return decode(); }
/** * Gets the Oracle-style * <code>DECODE(expression, search, result[, search , result]... [, default])</code> * function. * * @see #decode(Field, Field, Field, Field[]) */ @Support public static <Z, T> Field<Z> decode(T value, T search, Z result) { return decode(value, search, result, new Object[0]); }
/** * Gets the Oracle-style * <code>DECODE(expression, search, result[, search , result]... [, default])</code> * function. * * @see #decode(Field, Field, Field, Field[]) */ @Support public static <Z, T> Field<Z> decode(T value, T search, Z result) { return decode(value, search, result, new Object[0]); }
@Override @Deprecated public final <Z> Field<Z> decode(T search, Z result) { return DSL.decode(this, Tools.field(search, this), Tools.field(result)); }
/** * Initialise a {@link Case} statement. * <p> * This API can be used to create expressions of the type <code><pre> * CASE WHEN x < 1 THEN 'one' * WHEN x >= 2 THEN 'two' * ELSE 'three' * END * </pre></code> * <p> * Choose is used as a method name to avoid name clashes with Java's * reserved literal "case". */ @Support public static <T> CaseConditionStep<T> when(Condition condition, T result) { return decode().when(condition, result); }
/** * Initialise a {@link Case} statement. * <p> * This API can be used to create expressions of the type <code><pre> * CASE WHEN x < 1 THEN 'one' * WHEN x >= 2 THEN 'two' * ELSE 'three' * END * </pre></code> * <p> * Choose is used as a method name to avoid name clashes with Java's * reserved literal "case". */ @Support public static <T> CaseConditionStep<T> when(Condition condition, Field<T> result) { return decode().when(condition, result); }
private static final Field<?> parseFieldDecodeIf(ParserContext ctx) { if (parseFunctionNameIf(ctx, "DECODE")) { parse(ctx, '('); List<Field<?>> fields = parseFields(ctx); int size = fields.size(); if (size < 3) throw ctx.expected("At least three arguments to DECODE()"); parse(ctx, ')'); return DSL.decode( (Field<Object>) fields.get(0), (Field<Object>) fields.get(1), (Field<Object>) fields.get(2), (Field<Object>[]) (size == 3 ? EMPTY_FIELD : fields.subList(3, size).toArray(EMPTY_FIELD)) ); } return null; }
/** * Initialise a {@link Case} statement. * <p> * This API can be used to create expressions of the type <code><pre> * CASE WHEN x < 1 THEN 'one' * WHEN x >= 2 THEN 'two' * ELSE 'three' * END * </pre></code> * <p> * Choose is used as a method name to avoid name clashes with Java's * reserved literal "case". */ @Support public static <T> CaseConditionStep<T> when(Condition condition, Select<? extends Record1<T>> result) { return decode().when(condition, result); }
/** * Gets the Oracle-style * <code>DECODE(expression, search, result[, search , result]... [, default])</code> * function. * * @see #decode(Field, Field, Field, Field[]) */ @Support public static <Z, T> Field<Z> decode(T value, T search, Z result, Object... more) { return decode(Utils.field(value), Utils.field(search), Utils.field(result), Utils.fields(more).toArray(new Field[0])); }
/** * Gets the Oracle-style * <code>DECODE(expression, search, result[, search , result]... [, default])</code> * function. * * @see #decode(Field, Field, Field, Field[]) */ @Support public static <Z, T> Field<Z> decode(T value, T search, Z result, Object... more) { return decode(Tools.field(value), Tools.field(search), Tools.field(result), Tools.fields(more).toArray(EMPTY_FIELD)); }
/** * Gets the Oracle-style * <code>DECODE(expression, search, result[, search , result]... [, default])</code> * function. * * @see #decode(Field, Field, Field, Field[]) */ @Support public static <Z, T> Field<Z> decode(Field<T> value, Field<T> search, Field<Z> result) { return decode(nullSafe(value), nullSafe(search), nullSafe(result), new Field[0]); }
/** * Gets the Oracle-style * <code>DECODE(expression, search, result[, search , result]... [, default])</code> * function. * * @see #decode(Field, Field, Field, Field[]) */ @Support public static <Z, T> Field<Z> decode(Field<T> value, Field<T> search, Field<Z> result) { return decode(nullSafe(value), nullSafe(search), nullSafe(result), EMPTY_FIELD); }
@Override @Deprecated public final <Z> Field<Z> decode(T search, Z result, Object... more) { Field<Z> r = Tools.field(result); DataType<?>[] types = new DataType[more.length]; for (int i = 0; i < types.length - 1; i = i + 2) { types[i] = getDataType(); types[i + 1] = r.getDataType(); } if (types.length % 2 == 1) { types[types.length - 1] = r.getDataType(); } return DSL.decode(this, Tools.field(search, this), r, Tools.fieldArray(Tools.fields(more, types))); }
@Override final Field<T> getFunction0(Configuration configuration) { switch (configuration.dialect().family()) { /* [pro] xx xxxx xxxxxxx xxxx xxxxxxx xx [/pro] */ case H2: case HSQLDB: return field("{nvl2}({0}, {1}, {2})", getDataType(), arg1, arg2, arg3); default: return DSL.decode().when(arg1.isNotNull(), arg2).otherwise(arg3); } } }