Rpad(Field<String> field, Field<? extends Number> length, Field<String> character) { super("rpad", SQLDataType.VARCHAR, field, length, character); this.field = field; this.length = length; this.character = (character == null ? inline(" ") : character); }
static final <T> List<Field<T>> inline(T[] values) { List<Field<T>> result = new ArrayList<Field<T>>(); if (values != null) { for (T value : values) { result.add(DSL.inline(value)); } } return result; }
@Override public final void addOrderBy(int... fieldIndexes) { Field<?>[] fields = new Field[fieldIndexes.length]; for (int i = 0; i < fieldIndexes.length; i++) { fields[i] = inline(fieldIndexes[i]); } addOrderBy(fields); }
@Override public final void addOrderBy(int... fieldIndexes) { Field<?>[] fields = new Field[fieldIndexes.length]; for (int i = 0; i < fieldIndexes.length; i++) { fields[i] = inline(fieldIndexes[i]); } addOrderBy(fields); }
/** * A <code>2</code> literal. * <p> * This is useful for mathematical functions. The <code>1</code> literal * will not generate a bind variable. * * @return A <code>2</code> literal as a <code>Field</code> */ @Support public static Param<Integer> two() { return inline(2); }
LeadLag(String function, Field<T> field, int offset) { super(function, field.getDataType(), field, inline(offset)); this.function = function; this.field = field; this.offset = offset; this.defaultValue = null; }
private final Condition condition(Configuration configuration) { Field<String> concat; if (rhs == null) { concat = DSL.concat(inline("%"), Tools.escapeForLike(value, configuration), inline("%")); } else { concat = DSL.concat(inline("%"), Tools.escapeForLike(rhs, configuration), inline("%")); } return lhs.likeIgnoreCase(concat, Tools.ESCAPE); } }
@Override final Field<String> getFunction0(Configuration configuration) { Function<String> result; if (separator == null) result = new Function<String>(Term.LIST_AGG, distinct, SQLDataType.VARCHAR, field, inline(",")); else result = new Function<String>(Term.LIST_AGG, distinct, SQLDataType.VARCHAR, field, inline(separator)); if (orderBy.isEmpty()) return result; else return result.withinGroupOrderBy(orderBy); }
/** * The <code>ntile([number]) over ([analytic clause])</code> function. */ @Support({ CUBRID, MARIADB, MYSQL_8_0, POSTGRES }) public static WindowOverStep<Integer> ntile(int number) { return new org.jooq.impl.Function<Integer>("ntile", SQLDataType.INTEGER, inline(number)); }
@Override public Object valueInline(ObjectIndex index, Object value) { return DSL.inline(valueString(index, value), database.stringIndexType()); } }
@Override public Object valueInline(ObjectIndex index, Object value) { return DSL.inline(ObjectUtils.to(UUID.class, value), database.uuidType()); } }
@Override public Object valueInline(ObjectIndex index, Object value) { return DSL.inline(ObjectUtils.to(Double.class, value), database.doubleType()); } }
private final Condition condition(Configuration configuration) { // [#1107] Some dialects support "contains" operations for ARRAYs // [#5929] Check both sides of the operation for array types if (lhs.getDataType().isArray() || (rhs != null && rhs.getDataType().isArray()) || (rhs == null && value != null && value.getClass().isArray())) return new PostgresArrayContains(); // "contains" operations on Strings else return lhs.like((rhs == null) ? DSL.concat(inline("%"), Tools.escapeForLike(value, configuration), inline("%")) : DSL.concat(inline("%"), Tools.escapeForLike(rhs, configuration), inline("%")), Tools.ESCAPE); }
/** * Truncate a number to a given number of decimals. * * @see #trunc(Field, Field) */ @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static <T extends Number> Field<T> trunc(T number) { return trunc(Tools.field(number), inline(0)); }
@Override final Field<BigDecimal> getFunction0(Configuration configuration) { switch (configuration.family()) { case SQLITE: return inline(Math.PI, BigDecimal.class); default: return function("pi", getDataType()); } } }
@Override public final Condition startsWith(Field<T> value) { Field<String> concat = DSL.concat(Tools.escapeForLike(value), inline("%")); return like(concat, Tools.ESCAPE); }
@Override public final Condition endsWith(Field<T> value) { Field<String> concat = DSL.concat(inline("%"), Tools.escapeForLike(value)); return like(concat, Tools.ESCAPE); }
/** * Truncate a number to a given number of decimals. * * @see #trunc(Field, Field) */ @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES }) public static <T extends Number> Field<T> trunc(T number, int decimals) { return trunc(Tools.field(number), inline(decimals)); }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public final Condition endsWith(T value) { if (value instanceof Field) return endsWith((Field) value); Field<String> concat = DSL.concat(inline("%"), Tools.escapeForLike(value)); return like(concat, Tools.ESCAPE); }
@Override final Field<BigDecimal> getFunction0(Configuration configuration) { switch (configuration.family()) { case FIREBIRD: case SQLITE: return argument.cast(BigDecimal.class).mul(pi()).div(inline(180)); default: return function("radians", SQLDataType.NUMERIC, argument); } } }